almaops.vars
ABLEHNUNGSWARNUNG
Diese Ansible-Rolle wurde zugunsten der Sammlung almaops.common
eingestellt.
almaops.vars
Diese Rolle beinhaltet Variablen aus einem spezifischen Verzeichnis.
Idee
Bei der Entwicklung von CI/CD für ein großes Projekt haben wir festgestellt, dass es sehr praktisch ist, Variablen in umgebungsspezifischen Verzeichnissen zu speichern und diese dann zu laden. Außerdem fanden wir es nützlich, Anmeldedaten und allgemeine Variablen in separate Verzeichnisse aufzuteilen. Die Verzeichnisse haben eine Struktur wie folgt:
.
├── common-vars
│ ├── project-A
│ │ └── dev
│ └── project-B
│ └── dev
├── credentials
│ ├── project-A
│ │ ├── dev
│ │ └── prod
│ └── project-B
│ ├── dev
│ └── prod
└── env-vars
├── project-A-env01
├── project-A-env02
├── project-A-prod
├── project-B-env01
├── project-B-env02
└── project-B-prod
Wir haben Hosts aus der gleichen Umgebung in eine Gruppe (nennen wir sie z.B. project-a-env01
) zusammengelegt und in der entsprechenden Datei unter group_vars
die Verzeichnisse angegeben, aus denen Variablen geladen werden sollen (wie im Beispiel unten).
Der Vorteil dieses Ansatzes ist, dass die enthaltenen Variablen immer die höchste Priorität haben (außer --extra-vars
), sodass man immer weiß, wo man nach den Parametern für die Umgebung suchen muss.
Rollenvariablen
vars_root: Hier werden die Verzeichnisse mit Umgebungen gespeichert.
vars_group: Verzeichnis mit Umgebungsvariablen, dieser Pfad ist relativ zu vars_root.
vars_source: Wenn angegeben, lädt die Rolle Variablen nur aus diesem Verzeichnis.
Rollenstandards
vars_source: "{{ vars_root }}/{{ vars_group }}"
Beispiel-Playbook
Dieser Ausschnitt lädt alle *.yml
-Dateien aus playbook_dir/vars/dev:
- hosts: gruppe-mit-allen-hosts-für-dev-env
roles:
- role: almaops.vars
vars_root: "{{ playbook_dir }}/vars"
vars_group: "dev"
Dieser Ausschnitt lädt alle *.yml
-Dateien aus /home/user/my-env:
- hosts: gruppe-mit-allen-hosts-für-dev-env
roles:
- role: almaops.vars
vars_source: "/home/user/my-env"
Dieser Ausschnitt lädt alle *.yml
-Dateien aus: playbook_dir/creds/dev, playbook_dir/env-vars/dev, playbook_dir/common-vars/my-dev-env
--- playbook.yml ---
- hosts: gruppe-mit-allen-hosts-für-dev-env
roles:
# Anmeldedaten laden
- role: almaops.vars
vars_root: "{{ playbook_dir }}/creds"
vars_group: "{{ credentials_library }}"
# Variablen spezifisch für diese Umgebungsgruppe (Gruppe ähnlicher Umgebungen) laden
- role: almaops.vars
vars_root: "{{ playbook_dir }}/common-vars"
vars_group: "{{ env_group_name }}"
# Umgebungs-spezifische Variablen laden
- role: almaops.vars
vars_root: "{{ playbook_dir }}/env-vars"
vars_group: "{{ env_name }}"
--- group_vars/gruppe-mit-allen-hosts-für-dev-env.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "my-dev-env"
Lizenz
MIT
ansible-galaxy install almaops.vars