如何为 SSH 连接设置默认的 Ansible 用户名/密码?

Rob*_*ert 91 ansible

我正在使用 Ansible,并且我的库存/全部中有此配置:

[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[all:children]
master
slave
Run Code Online (Sandbox Code Playgroud)

我不想为每个新实例重复所有参数。如何仅在一处配置它们?有没有这些参数的文件?

小智 125

您可以将以下部分添加到您的库存文件中:

[all:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_ssh_pass=vagrant
Run Code Online (Sandbox Code Playgroud)

注意:在 Ansible 2.0 之前ansible_useransible_ssh_user.

  • Ansible 2.0以上,应该是:`[all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin` (5认同)
  • @030 在这里:http://docs.ansible.com/ansible/intro_inventory.html#list-of-behavioral-inventory-parameters (4认同)
  • @zx1986 你从哪里读到的? (2认同)

Phi*_*son 26

组变量

您可以通过使用Ansible 的最佳实践文档中指定的playbook 布局并在其中定义它们的文件来设置适用于所有主机的变量。group_vars/all

---
# file: group_vars/all
ansible_connection: ssh 
ansible_ssh_user: vagrant 
ansible_ssh_pass: vagrant
Run Code Online (Sandbox Code Playgroud)

[编辑] 虽然我对你试图做的事情感到困惑。您不需要在清单中指定 Ansible 用户或密码。如果您使用的是 Vagrant,则绝对不会,并且如果您从命令行调用 Ansible,则可以指定用户--user=vagrant并使用--ask-pass.


pod*_*rok 8

我认为最好在整个 pull 的所有服务器上使用 ssh 密钥安装。您应该只在每个节点上运行 ssh-copy-id 并在任何地方安装您的 ssh 密钥,以便 ansible 能够使用您的 ssh 密钥登录。不将密码保存到剧本/清单中会更安全。

为此,您应该生成 ssh 密钥对 ,然后为所有服务器运行 ssh-copy-id。

  • 如果有人可以从您的配置文件中窃取密码,他们也很可能能够获取您的 ssh 密钥。这与回答 OP 问题完全没有关系。这个问题并不是在征求对替代方案的意见。 (3认同)
  • @MuhFugen > 如何只在一处配置它们?有没有这些参数的文件?这是一个确切的短语,它为意见留下了大门,而回应则给出了对正确方向的理解。窃取配置(可能存在于 git repo 的某个地方)与窃取私钥不同。 (2认同)

Mit*_*ril 6

将下面添加到库存主机。

对于 Ansible <2.0:

[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant 
ansible_ssh_pass=vagrant
Run Code Online (Sandbox Code Playgroud)

对于 Ansible >=2.0

[all:vars]
ansible_connection=ssh # actually default mode smart is OK
ansible_user=vagrant
ansible_pass=vagrant # or ansible_ssh_pass=vagrant
Run Code Online (Sandbox Code Playgroud)