如何在清单文件中使用 ansible-vault 加密密码?
How can I use an ansible-vault encrypted password in inventory file?
我想在带有 ansible-vault 的清单文件中使用加密密码,然后 运行 针对该文件的剧本。类似于:
ansible-playbook --ask-vault-pass -i inventory test.yml
我尝试为所有主机使用单一密码并且它工作正常,但需要为不同的主机使用不同的密码。我们如何在清单文件中使用通过 ansible-vault 生成的变量?
下面是我已经厌倦的代码:
生成ansible-vault加密字符串
ansible-vault encrypt_string 'abc123' --name ansible_ssh_pass > a_password_file
test.yml 文件
- hosts: hostgroup_1
vars_files:
- a_password_file
tasks:
- command: date
register: output
- debug:
msg: "{{ output.stdout }}"
库存文件:
[hostgroup_1]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
[hostgroup_2]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
输出:
ansible-playbook -i inventory --ask-vault-pass test.yml
Vault password:
PLAY [valut test] *****************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************************
ok: [xxx.xxx.com]
ok: [xxx.xxx.com]
TASK [command] ********************************************************************************************************************************************
changed: [xxx.xxx.com]
changed: [xxx.xxx.com]
TASK [debug] **********************************************************************************************************************************************
ok: [xxx.xxx.com] => {
"msg": "XXX XXX XX XX:XX:XX XXX XXXX"
}
ok: [xxx.xxx.com] => {
"msg": "XXX XXX XX XX:XX:XX XXX XXXX"
}
PLAY RECAP ************************************************************************************************************************************************
xxx.xxx.com : ok=3 changed=1 unreachable=0 failed=0
xxx.xxx.com : ok=3 changed=1 unreachable=0 failed=0
在上面的代码中,我对所有主机使用了相同的 ansible_ssh_pass,但我想使用下面的清单文件,其中包含每个主机的不同密码
库存文件:
[hostgroup_1]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root ansible_ssh_pass=abc123
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root ansible_ssh_pass=123abc
[hostgroup_2]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root ansible_ssh_pass=xyz098
在清单下的 host_vars
子目录中为每个主机分别保存库加密文件。
我想在带有 ansible-vault 的清单文件中使用加密密码,然后 运行 针对该文件的剧本。类似于:
ansible-playbook --ask-vault-pass -i inventory test.yml
我尝试为所有主机使用单一密码并且它工作正常,但需要为不同的主机使用不同的密码。我们如何在清单文件中使用通过 ansible-vault 生成的变量?
下面是我已经厌倦的代码:
生成ansible-vault加密字符串
ansible-vault encrypt_string 'abc123' --name ansible_ssh_pass > a_password_file
test.yml 文件
- hosts: hostgroup_1
vars_files:
- a_password_file
tasks:
- command: date
register: output
- debug:
msg: "{{ output.stdout }}"
库存文件:
[hostgroup_1]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
[hostgroup_2]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root
输出:
ansible-playbook -i inventory --ask-vault-pass test.yml
Vault password:
PLAY [valut test] *****************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************************
ok: [xxx.xxx.com]
ok: [xxx.xxx.com]
TASK [command] ********************************************************************************************************************************************
changed: [xxx.xxx.com]
changed: [xxx.xxx.com]
TASK [debug] **********************************************************************************************************************************************
ok: [xxx.xxx.com] => {
"msg": "XXX XXX XX XX:XX:XX XXX XXXX"
}
ok: [xxx.xxx.com] => {
"msg": "XXX XXX XX XX:XX:XX XXX XXXX"
}
PLAY RECAP ************************************************************************************************************************************************
xxx.xxx.com : ok=3 changed=1 unreachable=0 failed=0
xxx.xxx.com : ok=3 changed=1 unreachable=0 failed=0
在上面的代码中,我对所有主机使用了相同的 ansible_ssh_pass,但我想使用下面的清单文件,其中包含每个主机的不同密码
库存文件:
[hostgroup_1]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root ansible_ssh_pass=abc123
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root ansible_ssh_pass=123abc
[hostgroup_2]
xxx.xxx.com ansible_host=xx.xx.xx.xx ansible_user=root ansible_ssh_pass=xyz098
在清单下的 host_vars
子目录中为每个主机分别保存库加密文件。