如何使用vault为ansible中的一组主机提供SSH用户密码
考虑到以下Ansible如何使用vault为ansible中的一组主机提供SSH用户密码,ansible,ansible-inventory,ansible-vault,Ansible,Ansible Inventory,Ansible Vault,考虑到以下Ansible主机文件: [webservers] server1.example.com ansible_ssh_pass=1234567 server2.example.com ansible_ssh_pass=2345678 server3.example.com ansible_ssh_pass=3456789 我希望包含vault文件中的这些密码值,并创建一个hosts文件,如(我的目的是创建一个ini清单格式): 其中sss\u pass变量来自host\
主机
文件:
[webservers]
server1.example.com ansible_ssh_pass=1234567
server2.example.com ansible_ssh_pass=2345678
server3.example.com ansible_ssh_pass=3456789
我希望包含vault文件中的这些密码值,并创建一个hosts
文件,如(我的目的是创建一个ini
清单格式):
其中sss\u pass
变量来自host\u vars
文件夹中定义的Vault文件
相关的ansible文件夹结构如下所示:
playbook.yml
inventories/
atlanta/
group_vars/
hosts
host_vars/
server1.example.com
server2.example.com
server3.example.com
但ansible在抱怨:
[WARNING]: * Failed to parse /root/hsm-ansible-deploy/inventories/atlanta/hosts with ini plugin: /root/hsm-ansible-deploy/inventories/atlanta/hosts:18: Expected key=value host variable assignment, got: ssh_pass
- 为什么我会出错
- 如何将密码导入主机文件
hosts
文件的正确方法是:
[webservers]
server1.example.com ansible_ssh_pass="{{ ssh_pass }}"
server2.example.com ansible_ssh_pass="{{ ssh_pass }}"
server3.example.com ansible_ssh_pass="{{ ssh_pass }}"
但是我还发现了一个更优雅的解决方案,hosts
文件更优雅,在hosts
中根本不提供ansible\u ssh\u pass
变量:
[webservers]
server1.example.com
server2.example.com
server3.example.com
并使用组变量/all
在此处定义此变量:
---
ansible_ssh_pass: "{{ vault_ansible_ssh_pass }}"
其中,vault\u ansible\u ssh\u pass
在每个主机机密保险存储文件中定义,如host\u vars/server1.example.com
---
vault_ansible_ssh_pass: "my secret password"
然后使用ansible vault
对这些文件进行加密:
ansible-vault encrypt inventories/atlanta/host_vars/server*/vault --vault-password-file ~/.vault_pass.txt
其中
~/.vault\u pass.txt
以明文形式包含ansible vault密码。这是一个输入错误。空格字符是分隔符。使用引号或删除空格。 列出的问题与此无关。谢谢!内置语法错误。我还找到了另一个解决方案,其中ansible\u ssh\u pass:“{{ssh\u pass}}”
实际上可以在group\u vars
中定义,然后hosts
文件更干净。好的,我重新表述了问题,并根据您的指示和我的发现给出了答案。谢谢为什么不在每个host\u vars
文件中简单地将变量称为ansible\u ssh\u pass
?这样,即使是组var也不需要。
ansible-vault encrypt inventories/atlanta/host_vars/server*/vault --vault-password-file ~/.vault_pass.txt