问题的解决方法是使用Expect模块。Expect是一个用于自动化脚本的工具,可以与交互式应用程序进行通信。Ansible的Expect模块基于这个工具,可以实现与SSH或telnet服务器的交互。
以下是一个简单的示例,演示如何使用Ansible的Expect模块:
- name: execute a command using Expect
expect:
command: some_command
responses:
password: "{{ssh_password}}"
上面的代码示例将执行一个名为“some_command”的命令,并带有一个“密码”提示。在这种情况下,Ansible将等待输入ssh密码,并将其传递给远程服务器。如果需要响应多个提示符,可以使用responses字典进行配置。
需要注意的是,Expect模块需要在目标主机上安装Expect软件包。