freehck.var_loader
freehck.var_loader
Diese Rolle beinhaltet Variablen aus einem spezifischen Verzeichnis.
Idee
Während der Entwicklung von CI/CD für ein großes Projekt haben wir festgestellt, dass es sehr praktisch ist, Umgebungsvariablen in Verzeichnissen zu speichern, die spezifisch für jede Umgebung sind, und sie dann zu laden. Außerdem fanden wir es hilfreich, Anmeldeinformationen und allgemeine Variablen in separate Verzeichnisse zu unterteilen. Die Verzeichnisse haben eine Struktur wie diese:
.
├── common-vars
│ ├── projekt-A
│ │ └── dev
│ └── projekt-B
│ └── dev
├── credentials
│ ├── projekt-A
│ │ ├── dev
│ │ └── prod
│ └── projekt-B
│ ├── dev
│ └── prod
└── env-vars
├── projekt-A-env01
├── projekt-A-env02
├── projekt-A-prod
├── projekt-B-env01
├── projekt-B-env02
└── projekt-B-prod
Wir gruppieren Hosts aus derselben Umgebung in einer Gruppe (wir nennen sie z.B. projekt-a-env01
) und geben in der entsprechenden Datei unter group_vars
die Verzeichnisse an, aus denen die 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
), so dass man immer weiß, wo man nach seinen Umgebungsparametern suchen muss.
Rollenvariablen
var_loader_root: hier werden Verzeichnisse mit Umgebungen gespeichert
var_loader_group_name: Verzeichnis mit Umgebungsvariablen, dieser Pfad ist relativ zu var_loader_root
var_loader_src: wenn angegeben, lädt die Rolle nur Variablen aus diesem Verzeichnis
Rollenstandardeinstellungen
var_loader_src: "{{ var_loader_root }}/{{ var_loader_group_name }}"
Beispiel-Playbook
Dieser Abschnitt lädt alle *.yml
-Dateien aus playbook_dir/vars/dev:
- hosts: gruppe-mit-allen-hosts-für-dev-env
roles:
- role: freehck.var_loader
var_loader_root: "{{ playbook_dir }}/vars"
var_loader_group_name: "dev"
Dieser Abschnitt lädt alle *.yml
-Dateien aus /home/user/my-env:
- hosts: gruppe-mit-allen-hosts-für-dev-env
roles:
- role: freehck.var_loader
var_loader_src: "/home/user/my-env"
Dieser Abschnitt 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:
# Anmeldeinformationen laden
- role: freehck.var_loader
var_loader_root: "{{ playbook_dir }}/creds"
var_loader_group_name: "{{ credentials_library }}"
# Variablen laden, die spezifisch für diese Umgebungsgruppe sind (Gruppe ähnlicher Umgebungen)
- role: freehck.var_loader
var_loader_root: "{{ playbook_dir }}/common-vars"
var_loader_group_name: "{{ env_group_name }}"
# Umgebungspezifische Variablen laden
- role: freehck.var_loader
var_loader_root: "{{ playbook_dir }}/env-vars"
var_loader_group_name: "{{ 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
Autoreninformation
Dmitrii Kashin, freehck@freehck.ru
ansible-galaxy install freehck.var_loader