almaops.vars

AVERTISSEMENT DE DÉPRÉCATION

Ce rôle Ansible a été déprécié au profit de la collection almaops.common.

almaops.vars

Ce rôle inclut des variables d'un répertoire spécifique.

Idée

Lors du développement d'un CI/CD pour un projet assez grand, nous avons constaté qu'il est très pratique de stocker des variables dans des répertoires spécifiques pour chaque environnement, puis de les charger. Nous avons ensuite découvert qu'il est utile de séparer les identifiants et les variables communes dans des répertoires distincts. Les répertoires ont simplement une structure comme ceci :

.
├── variables-communes
│   ├── projet-A
│   │   └── dev
│   └── projet-B
│       └── dev
├── identifiants
│   ├── projet-A
│   │   ├── dev
│   │   └── prod
│   └── projet-B
│       ├── dev
│       └── prod
└── variables-env
    ├── projet-A-env01
    ├── projet-A-env02
    ├── projet-A-prod
    ├── projet-B-env01
    ├── projet-B-env02
    └── projet-B-prod

Nous regroupons les hôtes du même environnement dans un groupe (appelons-le par exemple projet-a-env01), et nous spécifions dans le fichier approprié sous group_vars les répertoires d'où charger les variables (comme dans l'exemple ci-dessous).

L'avantage de cette approche est que les variables incluses ont toujours la priorité maximale (sauf --extra-vars), donc vous savez toujours où chercher vos paramètres d'environnement.

Variables du rôle

vars_root : ici se trouvent les répertoires avec les environnements

vars_group : répertoire avec les variables d'environnement, ce chemin est relatif à vars_root

vars_source : si spécifié, le rôle chargera les variables uniquement depuis ce répertoire

Defaults du rôle

vars_source : "{{ vars_root }}/{{ vars_group }}"

Exemple de Playbook

Ce code inclura tous les fichiers *.yml de playbook_dir/vars/dev :

- hosts: groupe-contenant-tous-les-hôtes-pour-l-env-dev
  roles:
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/vars"
      vars_group: "dev"

Ce code inclura tous les fichiers *.yml de /home/user/my-env

- hosts: groupe-contenant-tous-les-hôtes-pour-l-env-dev
  roles:
    - role: almaops.vars
      vars_source: "/home/user/my-env"

Ce code inclura tous les fichiers *.yml de : playbook_dir/creds/dev, playbook_dir/env-vars/dev, playbook_dir/common-vars/mon-env-dev

--- playbook.yml ---
- hosts: groupe-contenant-tous-les-hôtes-pour-l-env-dev
  roles:
    # charger les identifiants
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/creds"
      vars_group: "{{ credentials_library }}"
    # charger les variables spécifiques pour ce groupe d'environnement (groupe d'environments similaires)
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/common-vars"
      vars_group: "{{ env_group_name }}"
    # charger les variables spécifiques à l'environnement
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/env-vars"
      vars_group: "{{ env_name }}"
      
--- group_vars/groupe-contenant-tous-les-hôtes-pour-l-env-dev.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "mon-env-dev"

Licence

MIT

À propos du projet

Loading ansible variables from files

Installer
ansible-galaxy install almaops.vars
Licence
Unknown
Téléchargements
221
Propriétaire
Premium IT Consulting