freehck.var_loader

freehck.var_loader

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

Idée

Lors du développement de CI/CD pour un projet assez important, nous avons constaté qu'il était très pratique de stocker les variables d'environnement dans des répertoires spécifiques à chaque environnement, puis de les charger. Ensuite, nous avons trouvé utile de séparer les identifiants et les variables communes dans des répertoires séparés. Les répertoires ont simplement une structure comme celle-ci :

.
├── 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

Nous plaçons les hôtes d'un même environnement dans un groupe (appelons-le par exemple project-a-env01), et spécifions dans le fichier approprié sous group_vars les répertoires à partir desquels charger les variables (comme dans l'exemple ci-dessous).

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

Variables du Rôle

var_loader_root : ici, les répertoires avec les environnements sont stockés

var_loader_group_name : répertoire contenant les variables d'environnement, ce chemin est relatif à var_loader_root

var_loader_src : si spécifié, le rôle chargera des variables uniquement à partir de ce répertoire

Valeurs par Défaut du Rôle

var_loader_src : "{{ var_loader_root }}/{{ var_loader_group_name }}"

Exemple de Playbook

Ce extrait inclura tous les fichiers *.yml du répertoire playbook_dir/vars/dev :

- hosts: groupe-contenant-tous-les-hôtes-pour-l-env-dev
  roles:
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/vars"
      var_loader_group_name: "dev"

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

- hosts: groupe-contenant-tous-les-hôtes-pour-l-env-dev
  roles:
    - role: freehck.var_loader
      var_loader_src: "/home/user/my-env"

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

--- playbook.yml ---
- hosts: groupe-contenant-tous-les-hôtes-pour-l-env-dev
  roles:
    # charger les identifiants
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/creds"
      var_loader_group_name: "{{ credentials_library }}"
    # charger des variables spécifiques à ce groupe d'environnements
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/common-vars"
      var_loader_group_name: "{{ env_group_name }}"
    # charger les variables spécifiques à l'environnement
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/env-vars"
      var_loader_group_name: "{{ env_name }}"

--- group_vars/groupe-contenant-tous-les-hôtes-pour-l-env-dev.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "my-dev-env"

Licence

MIT

Informations sur l'Auteur

Dmitrii Kashin, freehck@freehck.ru

À propos du projet

loader for environment variables

Installer
ansible-galaxy install freehck.var_loader
Licence
Unknown
Téléchargements
2.5k
Propriétaire