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

How to pass a user / password in ansible command

我想将 Ansible 用作另一个 Python 软件的一部分。在该软件中,我有一个主机列表及其用户/密码。

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

还是我理解错了,只能通过SSH认证?

When speaking with remote machines, Ansible by default assumes you are using SSH keys. SSH keys are encouraged but password authentication can also be used where needed by supplying the option --ask-pass. If using sudo features and when sudo requires a password, also supply --ask-become-pass (previously --ask-sudo-pass which has been deprecated).

从未使用过该功能,但 docs 说可以。

您可以这样使用 --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) ,但不是在命令行上指定密码,这样它就不会出现在历史文件中,您可以将其保存到环境变量中。这样,当您关闭会话时它也会消失。

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. 下载 Source Code
  2. 解压并cd到目录
  3. ./configure
  4. 须藤安装