Saltar al contenido

¿Cómo dividir el archivo `defaults/main.yml` de un rol ansible en varios archivos?

Te sugerimos que revises esta solución en un entorno controlado antes de enviarlo a producción, saludos.

Solución:

La función que describo a continuación ha estado disponible desde Ansible 2.6, pero se corrigió un error en v2.6.2 y otro (menor) en v2.7.
Para ver una solución para versiones anteriores, consulte la respuesta de Paul.


defaults/main/

en lugar de crear defaults/main.ymlcrear un directoriodefaults/main/ – y coloque todos los archivos YAML allí.

  • defaults/main.ymldefaults/main/*.yml

Ansible cargará cualquier *.yml archivo dentro de ese directorio, por lo que puede nombrar sus archivos como roles/my-role/defaults/main/1,2.yml.

Tenga en cuenta que el archivo antiguo: defaults/main.yml — no debe existir. Vea este comentario de Github.


vars/main/

Por ciertola solución anterior también funciona para vars/:

  • vars/main.ymlvars/main/*.yml

más detalles

La función se introdujo en v2.6: confirmación de git, solicitud de extracción, problema principal de Github.

Ha habido dos correcciones de errores:

  • Corrección v2.7: git commit, Solicitud de extracción — respaldado a v2.6.2: confirmación, solicitud de extracción
  • Solución v2.7: confirmación de git, solicitud de extracción, discusión de errores

Si no está utilizando 2.6 (que probablemente debería, pero entiendo que no siempre es una opción), entonces puede encontrar útil include_vars.

- name: Include vars of stuff.yaml into the 'stuff' variable (2.2).
  include_vars:
    file: stuff.yaml
    name: stuff

- name: Conditionally decide to load in variables into 'plans' when x is 0, otherwise do not. (2.2)
  include_vars:
    file: contingency_plan.yaml
    name: plans
  when: x == 0

- name: Load a variable file based on the OS type, or a default if not found. Using free-form to specify the file.
  include_vars: " item "
  with_first_found:
    - " ansible_distribution .yaml"
    - " ansible_os_family .yaml"
    - default.yaml

- name: Bare include (free-form)
  include_vars: myvars.yaml

- name: Include all .json and .jsn files in vars/all and all nested directories (2.3)
  include_vars:
    dir: vars/all
    extensions:
        - json
        - jsn

- name: Include all default extension files in vars/all and all nested directories and save the output in test. (2.2)
  include_vars:
    dir: vars/all
    name: test

- name: Include default extension files in vars/services (2.2)
  include_vars:
    dir: vars/services
    depth: 1

- name: Include only files matching bastion.yaml (2.2)
  include_vars:
    dir: vars
    files_matching: bastion.yaml

Sin embargo, tenga en cuenta que esta es una directiva de tarea. No es tan bueno como simplemente poder incluirlo en el archivo predeterminado.

Te mostramos reseñas y puntuaciones

Si guardas alguna desconfianza o capacidad de medrar nuestro sección te recomendamos añadir una interpretación y con mucho gusto lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *