要使ansible剧本在目标 Junos 机器上的文件上复制,我需要 raw 模块和 sftp / scp 才能使用
目标机器(Junos)没有python ,因此,我仅在侧面使用 raw 模块来运行命令。而且我一直在尝试 sftp / scp 都要求在提示符下输入 password ,但是不能使用 raw 模块使它正常工作。
如果复制命令可以单行完成,那也可以,但是目标计算机也没有 sshpass 。因此,我希望能找到任何解决方法,以便可以从ansible剧本的 raw 模块的提示中提供 password 。
这是来自Junos的,在提示时提供密码后,sftp可以正常工作。
root@:~ # sftp <username>@host:/file/location/file destFile
<username>@host's password:
该剧本具有与 raw 相同的命令,但即使对 raw < / strong>使用(; / &&)。
- name: "Copy config file on Junos"
# raw: sftp <username>@host:/file/location/file destFile && <password>
# raw: sftp <username>@host:/file/location/file destFile;<password>
raw: sftp <username>@host:/file/location/file destFile
register: disp
- name: "Print disp"
debug:
var: disp
简而言之,我该如何使用ansible的 raw 模块进行操作,以允许在提示中提供密码?
答案 0 :(得分:0)
尝试使用expect和“ delegate_to:主机”。使“ 响应”适合您的需求。
- name: Copy config file on Junos
expect:
command: scp destFile username@junos:/file/location/file
responses:
(?i)username@junos's password: "MySekretPa$$word"
delegate_to: host
答案 1 :(得分:0)
似乎没有使用原始模块处理密码提示的示例。
因此,决定使用不同的方式来完成整个操作,即使用 expect 将文件从可移植主机复制到 junos 。以下是有效的 .yml :
- hosts: 127.0.0.1
connection: local
gather_facts: no
tasks:
- name: Copy config file on Junos
expect:
command: scp srcFile <user>@junos:/dest/file/
responses:
(.*)Password: "<password>"
delegate_to: localhost