Ansible原始模块 - 如何处理SFTP / SCP上的密码提示?

问题描述 投票:1回答:2

对于要在目标Junos机器上复制文件的ansible playbook,我需要使用原始模块和sftp / scp。

目标机器(Junos)没有python,所以我在ansible端只有原始模块来运行命令。我一直在尝试sftp / scp都需要在提示符下输入密码,但是没有让它使用原始模块工作。

如果复制命令可以在一行中完成,那也可以,但目标机器也没有sshpass。所以,我希望得到任何解决方法,以便在ansible playbook的原始模块的提示符上提供密码。

这是来自Junos,sftp在提示密码后工作正常。

root@:~ # sftp <username>@host:/file/location/file destFile
<username>@host's password:

并且playbook具有相同的raw命令,但即使使用多个命令设置为raw(; / &&),也无法处理密码提示。

     - 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的原始模块来允许在提示符下提供密码?

ansible sftp scp junos-automation
2个回答
0
投票

尝试使用expect和“delegate_to:host”。根据您的需求调整“响应”。

- 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

0
投票

似乎,没有这样的例子来处理原始模块的密码提示。

因此,决定以不同的方式做整个事情,使用从ansible主机到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
© www.soinside.com 2019 - 2024. All rights reserved.