Re-use Ansible vault file in different groups

319 Views Asked by At

I want to extend my current Ansible project to also support Linux servers. For that I want to re-use the vault file I have created but I cannot seem to find a solution without duplicating the vault file.

Here's what my current Ansible structure looks like

├── 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 }

Playbook is run like this:

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

My idea is to create a new group_vars/linux directory which contains all specific settings which only apply for linux servers.

1

There are 1 best solutions below

1
On BEST ANSWER

While writing this question I actually found neat solution. All general settings (including the vault file) can be stored in the default all group (see https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#default-groups) and all Windows/Linux specific settings (like ansible_connection) can be stored in separate directories:

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