我想将 Ansible 用作另一个 Python 软件的一部分。在该软件中,我有一个带有用户/密码的主机列表。
有没有办法将 SSH 连接的用户/通行证传递给 Ansible ad-hoc 命令或以加密方式将其写入任何文件?
还是我完全理解错了,唯一的方法是使用 SSH 认证?
我想将 Ansible 用作另一个 Python 软件的一部分。在该软件中,我有一个带有用户/密码的主机列表。
有没有办法将 SSH 连接的用户/通行证传递给 Ansible ad-hoc 命令或以加密方式将其写入任何文件?
还是我完全理解错了,唯一的方法是使用 SSH 认证?
与远程机器对话时,Ansible 默认假定您使用的是 SSH 密钥。鼓励使用 SSH 密钥,但也可以在需要时通过提供选项 --ask-pass 使用密码验证。如果使用 sudo 功能并且当 sudo 需要密码时,还要提供 --ask-become-pass (以前 --ask-sudo-pass 已被弃用)。
从未使用过该功能,但文档说可以。
你可以--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=domain\user 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: