ansible-vault 加密凭证

nic*_*coX 6 ansible

我有一个包含一台主机的清单文件:

10.1.32.123 ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

我的yaml文件:

- hosts: all
  sudo: yes
  gather_facts: yes
  serial: 20

  roles:
Run Code Online (Sandbox Code Playgroud)

这不是yaml我想用密码保护的文件,而是我的库存文件,因为它包含用户凭据。虽然这是不可能的,因为当我运行剧本时,清单文件中的内容不会解密。如果我对yaml文件进行了加密,它就会这样做。

ansible-playbook inventory site.yml --ask-vault-pass
Run Code Online (Sandbox Code Playgroud)
  1. 有没有办法将凭据添加ansible_ssh_user=vagrant ansible_ssh_pass=vagrantyaml文件中,并将 IP 保留在清单文件中。

文件:

保险柜

Bru*_*e P 5

我认为您无法加密主机文件。更好的方法是将任何敏感信息(如凭据)存储在使用 ansible-vault 加密的辅助 vars 文件中,然后将该文件包含在您的剧本中:

- hosts: all
  sudo: yes
  gather_facts: yes
  vars_files:
    - /path/to/encrypted/vars.yml
Run Code Online (Sandbox Code Playgroud)

您的inventory文件包含一个主机:

10.1.1.2
Run Code Online (Sandbox Code Playgroud)

vars/vars.yml将存储您的凭据:

ansible_ssh_user: vagrant
ansible_ssh_password: vagrant
Run Code Online (Sandbox Code Playgroud)

要使用多个主机,您可以在清单文件中添加组。特定组中的主机共享相同的凭据:

[group1]
10.1.1.2
10.1.1.3

[group2]
10.1.1.4
10.1.1.5
Run Code Online (Sandbox Code Playgroud)

您的剧本现在将有两个主机部分:

- hosts: group1
  vars_files:
    - vars/group1.yml

- hosts: group2
  vars_files:
    - vars/group2.yml
Run Code Online (Sandbox Code Playgroud)

group1.ymlgroup2.yml文件必须使用相同的密码。