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

Über das Projekt

loader for environment variables

Installieren
ansible-galaxy install freehck.var_loader
GitHub Repository
Lizenz
Unknown
Downloads
2.5k
Besitzer