(Relacionado con Callbacks o ganchos, y series de tareas reutilizables, en roles Ansible ):
¿Hay alguna manera mejor de agregar a una lista o agregar una clave a un diccionario en Ansible que (ab) usando una expresión de plantilla jina2?
Sé que puedes hacer algo como:
- name: this is a hack
shell: echo "{% originalvar.append('x') %}New value of originalvar is {{originalvar}}"
pero ¿realmente no hay ningún tipo de metatarea o ayuda para hacer esto?
Se siente frágil, parece no estar documentado y se basa en muchos supuestos sobre cómo funcionan las variables en Ansible.
Mi caso de uso son múltiples roles (extensiones de servidor de base de datos) que cada uno necesita para proporcionar alguna configuración a un rol base (el servidor de base de datos). No es tan simple como agregar una línea al archivo de configuración del servidor db; cada cambio se aplica a la misma línea , por ejemplo, las extensiones bdr
y pg_stat_statements
ambas deben aparecer en una línea de destino:
shared_preload_libaries = 'bdr, pg_stat_statements'
¿Es la forma Ansible de hacer esto para procesar el archivo de configuración varias veces (una vez por extensión) con una expresión regular que extrae el valor actual, lo analiza y luego lo reescribe? Si es así, ¿cómo haces que ese idempotente en múltiples carreras?
¿Qué sucede si la configuración es más difícil de analizar y no es tan simple como agregar otro valor separado por comas? Piensa en archivos de configuración XML.