我有一个包含一台主机的库存文件:
10.1.32.123 ansible_ssh_用户=vagrant ansible_ssh_pass=vagrant
我的yaml
文件:
- hosts: all
sudo: yes
gather_facts: yes
serial: 20
roles:
yaml
我希望用密码保护的不是文件,而是我的库存文件,因为它包含用户凭据。虽然这是不可能的,因为当我运行剧本时,库存文件中的内容不会解密。如果我加密了文件,就会解密yaml
。
ansible-playbook inventory site.yml --ask-vault-pass
- 有没有办法将凭证添加
ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
到yaml
文件中,并只将 IP 保留在库存文件中。
文档:
答案1
我认为您无法加密 hosts 文件。更好的方法是将任何敏感信息(如凭据)存储在使用 ansible-vault 加密的辅助 vars 文件中,然后将该文件包含在您的剧本中:
- hosts: all
sudo: yes
gather_facts: yes
vars_files:
- /path/to/encrypted/vars.yml
您的inventory
文件包含一个主机:
10.1.1.2
您vars/vars.yml
将存储您的凭证:
ansible_ssh_user: vagrant
ansible_ssh_password: vagrant
要使用多个主机,您可以在清单文件中添加组。特定组中的主机共享相同的凭据:
[group1]
10.1.1.2
10.1.1.3
[group2]
10.1.1.4
10.1.1.5
你的剧本现在将有两个主机部分:
- hosts: group1
vars_files:
- vars/group1.yml
- hosts: group2
vars_files:
- vars/group2.yml
group1.yml
和文件group2.yml
必须共享相同的密码。