我有一个包含一台主机的清单文件:
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)
ansible_ssh_user=vagrant ansible_ssh_pass=vagrant到yaml文件中,并将 IP 保留在清单文件中。文件:
我认为您无法加密主机文件。更好的方法是将任何敏感信息(如凭据)存储在使用 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.yml和group2.yml文件必须使用相同的密码。