在不同的组中重复使用 Ansible 保险库文件

Re-use Ansible vault file in different groups

我想扩展我当前的 Ansible 项目以支持 Linux 服务器。为此,我想重新使用我创建的保管库文件,但我似乎无法在不复制保管库文件的情况下找到解决方案。

这是我当前的 Ansible 结构的样子

├── ansible.cfg
├── ansible_pw.sh
├── group_vars
│   └── windows
│       ├── vault.yml
│       └── main.yml
├── inventory.yml
├── main.yml
└── roles
    ├── wait_for_host
    │   └── tasks
    │       └── main.yml
    └── install_software
        └── tasks
            └── main.yml

inventory.yml

---
all:
  children:
    windows:
      hosts:
        win-server.mycompany.com

main.yml

---
- hosts: windows
  tasks:
    - block:
      - include_role: { name: wait_for_host }
      - include_role: { name: install_software }

剧本是运行这样的:

ansible-playbook main.yml -i inventory.yml --vault-password-file ./ansible_pw.sh

我的想法是创建一个新的 group_vars/linux 目录,其中包含仅适用于 linux 服务器的所有特定设置。

在写这个问题时,我实际上找到了很好的解决方案。所有常规设置(包括保险库文件)都可以存储在默认的 all 组中(参见 https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#default-groups),所有 Windows/Linux 特定设置(如 ansible_connection)都可以存储在单独的目录:

group_vars
 ├── all
 │   ├── main.yml
 │   └── vault.yml
 ├── linux
 │   └── main.yml
 └── windows
     └── main.yml