我想将Ansible用作另一个Python软件的一部分。在该软件中,我有一个主机列表及其用户/密码。
有没有办法将SSH连接的用户/传递传递给Ansible ad-hoc命令,或者以加密方式将其写入任何文件?
或者我理解这一切都是错的,唯一的方法是使用SSH认证吗?
答案 0 :(得分:18)
与远程计算机通话时,默认情况下Ansible假定您是 使用SSH密钥。鼓励SSH密钥,但密码验证 也可以通过提供选项--ask-pass在需要的地方使用。如果 使用sudo功能,当sudo需要密码时,也提供 --ask-become-pass(以前的--ask-sudo-pass已被弃用)。
从未使用过此功能,但docs表示可以。
答案 1 :(得分:9)
您可以像这样使用--extra-vars
:
$ ansible all --inventory=10.0.1.2, -m ping \
--extra-vars "ansible_user=root ansible_password=yourpassword"
答案 2 :(得分:1)
如前所述,您可以使用--extra-vars(-e),但是不必在命令行上指定pwd,这样它就不会出现在历史记录文件中,您可以将其保存到环境变量中。这样,当您关闭会话时,它也会消失。
read -s PASS
ansible windows -i hosts -m win_ping -e "ansible_password=$PASS"
答案 3 :(得分:0)
我使用了命令
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: