ansible - 如何在 list 文件中使用 ansible-vault 加密密码?

标签 ansible password-encryption ansible-inventory ansible-vault

我想通过 ansible-vault 在我的 list 文件中使用加密密码,然后针对该文件运行 playbook。像这样的东西:

ansible-playbook --ask-vault-pass -i inventory test.yml

我尝试为所有主机使用单一密码并且它工作正常,但需要为不同的主机使用不同的密码。我们如何在 list 文件中使用通过 ansible-vault 生成的变量?

下面是我厌烦的代码:

生成ansible-vault加密字符串

ansible-vault encrypt_string 'abc123' --name ansible_ssh_pass > a_password_file

测试.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,但我想使用下面的 list 文件,其中包括每个主机的不同密码

库存文件:

[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

最佳答案

将保险库加密文件保存在 list 下的 host_vars 子目录中,分别为每个主机。

参见 Splitting Out Host and Group Specific Data了解详情。

关于ansible - 如何在 list 文件中使用 ansible-vault 加密密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48685414/

相关文章:

json - jinja2.exceptions.TemplateRuntimeError : no filter named 'split' 错误

php - MYSQL 4 密码哈希 -> MYSQL 5

ansible - 使用ansible获取特定主机名的ip

ansible - 结合理解 ansible 变量和带有子操作的 Vault

ansible - 使用 Jinja2 从另一个列表和静态值创建字典列表

Ansible:更改 .yml 文件中目录内文件的权限

python - Ansible Inventory 模块覆盖 Python 中的组变量

tcp - TCP 客户端服务器架构中的简单密码验证

java - 在 Spring 中使用 BCryptPasswordEncoder 检索密码盐

regex - 有没有办法使用正则表达式来匹配 ansible 中的主机?