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

Über das Projekt

Loading ansible variables from files

Installieren
ansible-galaxy install almaops.vars
GitHub Repository
Lizenz
Unknown
Downloads
221
Besitzer
Premium IT Consulting