freehck.var_loader

freehck.var_loader

Este rol incluye variables de un directorio específico.

Idea

Mientras desarrollábamos CI/CD para un proyecto grande, encontramos que es muy conveniente almacenar variables de entorno en directorios específicos para cada entorno y luego cargarlas. Después, descubrimos que es útil separar credenciales y variables comunes en directorios diferentes. La estructura de directorios es la siguiente:

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

Agrupamos los hosts del mismo entorno en un grupo (llámalo, por ejemplo, project-a-env01), y especificamos en el archivo correspondiente bajo group_vars los directorios de donde cargar las 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 sabes dónde buscar tus parámetros de entorno.

Variables del Rol

var_loader_root: aquí se almacenan los directorios con los entornos

var_loader_group_name: directorio con variables de entorno, esta ruta es relativa a var_loader_root

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

Valores por Defecto del Rol

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

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: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/vars"
      var_loader_group_name: "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: freehck.var_loader
      var_loader_src: "/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: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/creds"
      var_loader_group_name: "{{ credentials_library }}"
    # cargar variables específicas para este grupo de entornos (grupo de entornos similares)
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/common-vars"
      var_loader_group_name: "{{ env_group_name }}"
    # cargar variables específicas para el entorno
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/env-vars"
      var_loader_group_name: "{{ 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

Información del Autor

Dmitrii Kashin, freehck@freehck.ru

Acerca del proyecto

loader for environment variables

Instalar
ansible-galaxy install freehck.var_loader
Licencia
Unknown
Descargas
2.5k
Propietario