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

时间:2016-05-03 12:51:11

标签: ssh ansible ansible-ad-hoc

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

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

或者我理解这一切都是错的,唯一的方法是使用SSH认证吗?

4 个答案:

答案 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:

  1. 下载Source Code
  2. 将其提取并CD进入目录
  3. ./ configure
  4. sudo进行安装