almaops.vars

ADVERTENCIA DE DEPRESIÓN

Este rol de Ansible ha sido depreciado a favor de la colección almaops.common.

almaops.vars

Este rol incluye variables de un directorio específico.

Idea

Mientras desarrollábamos CI/CD para un proyecto bastante grande, descubrimos que es muy conveniente almacenar las variables en directorios específicos para cada entorno y luego cargarlos. Después, nos dimos cuenta de que era útil dividir las credenciales y las variables comunes en directorios separados. Los directorios tienen una estructura como esta:

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

Colocamos hosts del mismo entorno en un grupo (llamémoslo por ejemplo project-a-env01), y especificamos en el archivo correspondiente bajo group_vars los directorios de los que cargar variables (como en el ejemplo a continuación).

La ventaja de este enfoque es que las variables incluidas siempre tienen la máxima prioridad (excepto --extra-vars), por lo que siempre tendrás claro dónde buscar tus parámetros de entorno.

Variables del Rol

vars_root: aquí se almacenan los directorios con los entornos

vars_group: directorio con variables de entorno; esta ruta es relativa a vars_root

vars_source: si se especifica, el rol cargará variables solo de este directorio

Valores Predeterminados del Rol

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

Ejemplo de Playbook

Este fragmento incluirá todos los archivos *.yml de playbook_dir/vars/dev:

- hosts: grupo-que-contiene-todos-los-hosts-para-el-entorno-dev
  roles:
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/vars"
      vars_group: "dev"

Este fragmento incluirá todos los archivos *.yml de /home/user/my-env:

- hosts: grupo-que-contiene-todos-los-hosts-para-el-entorno-dev
  roles:
    - role: almaops.vars
      vars_source: "/home/user/my-env"

Este fragmento incluirá todos los archivos *.yml de: playbook_dir/creds/dev, playbook_dir/env-vars/dev, playbook_dir/common-vars/my-dev-env:

--- playbook.yml ---
- hosts: grupo-que-contiene-todos-los-hosts-para-el-entorno-dev
  roles:
    # cargar credenciales
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/creds"
      vars_group: "{{ credentials_library }}"
    # cargar variables específicas para este grupo de entornos (grupo de entornos similares)
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/common-vars"
      vars_group: "{{ env_group_name }}"
    # cargar variables específicas del entorno
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/env-vars"
      vars_group: "{{ env_name }}"

--- group_vars/grupo-que-contiene-todos-los-hosts-para-el-entorno-dev.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "my-dev-env"

Licencia

MIT

Acerca del proyecto

Loading ansible variables from files

Instalar
ansible-galaxy install almaops.vars
Licencia
Unknown
Descargas
221
Propietario
Premium IT Consulting