41

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

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

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

4

4 回答 4

46

与远程机器对话时,Ansible 默认假定您使用的是 SSH 密钥。鼓励使用 SSH 密钥,但也可以在需要时通过提供选项 --ask-pass 使用密码验证。如果使用 sudo 功能并且当 sudo 需要密码时,还要提供 --ask-become-pass (以前 --ask-sudo-pass 已被弃用)。

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

于 2016-05-03T12:56:39.570 回答
34

你可以--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
于 2018-06-01T09:58:01.623 回答
5

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

read -s PASS
ansible windows -i hosts -m win_ping -e "ansible_password=$PASS"
于 2020-01-09T22:33:47.787 回答
4

我使用了命令

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. 须藤使安装
于 2020-12-12T16:26:01.650 回答