我想使用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:
- 下载源代码
- 将它和cd提取到目录中
- /配置
- sudo制作安装