如何在ansible命令中传递用户/密码



我想使用Ansible作为另一个Python软件的一部分。在那个软件中,我有一个主机列表,上面有他们的用户/密码。

有没有办法将SSH连接的user/pass传递给Ansible ad-hoc命令,或者以加密的方式将其写入任何文件?

还是我完全理解错了,唯一的方法就是SSH认证?

文档说你可以通过命令行指定密码:

-k--ask-pass
询问连接密码

Ansible还可以按主机将密码存储在ansible_password变量中。

您可以这样使用--extra-vars

ansible all --inventory=10.0.1.2, -m ping 
  --extra-vars "ansible_user=root ansible_password=yourpassword"

如果您正在向加入Microsoft Active Directory域的Linux主机进行身份验证,则此命令行有效。

ansible --module-name ping 
  --extra-vars 'ansible_user=domainuser ansible_password=PASSWORD'  
  --inventory 10.10.6.184, all

如前所述,您可以使用--extra vars(-e),但您可以将其保存到环境变量中,而不是在命令行上指定pwd,这样它就不会出现在历史文件中。这样,当您关闭会话时,它也会消失。

read -s PASS
ansible windows -i hosts -m win_ping -e "ansible_password=$PASS"

我使用了命令

ansible -i inventory example -m ping -u <your_user_name> --ask-pass

它会询问您的密码。

对于任何收到错误的人:

to use the 'ssh' connection type with passwords, you must install the sshpass program

在MacOS上,您可以按照以下说明安装sshpass:

  1. 下载源代码
  2. 将它和cd提取到目录中
  3. /配置
  4. sudo制作安装

最新更新