
Necesito hacer un libro de jugadas que tome un archivo de plantilla, interpole algunas variables y coloque el archivo resultante en otro directorio.
La primera parte del problema es que el archivo resultante se utilizará como otro manual de Ansible, por lo que el archivo fuente contiene otras interpolaciones y estas interpolaciones deben conservarse tal como están. Como ejemplo, supongamos que el archivo fuente contiene algo como esto:
key1: {{ value1 }}
key2: {{ value2 }}
El valor de key1
debe ser interpolado por mi libro de jugadas (se convertirá en los valores de la value1
variable), pero al mismo tiempo value2
debe mantenerse tal como está (será {{ value2 }}
.
La segunda parte del problema es que no puedo simplemente modificar el archivo fuente y agregar barras invertidas antes de las llaves, porque otros procesos están actualizando este archivo. Además, como el archivo de plantilla se actualiza de vez en cuando, no puedo predecir qué variables deben omitirse después de la próxima actualización. Solo sé que necesito interpolar value1
, pero no sé cuáles son los nombres de las otras variables (hoy hay value2
y value3
, mañana los desarrolladores cambiaron el nombre value2
y value2_deprecated
agregaron value3
en alguna parte).
value1
¿Puedo pedirle a Ansible que solo necesito interpolar ?
Gracias.
Respuesta1
P:"La plantilla contiene interpolaciones y estas interpolaciones deben conservarse tal como están."
R: declarar variables predeterminadas
lbr: '{{ "{{" }}'
rbr: '{{ "}}" }}'
value1: '{{ lbr }} value1 {{ rbr }}'
value2: '{{ lbr }} value2 {{ rbr }}'
y crea la plantilla
shell> cat template.yml.j2
key1: {{ value1 }}
key2: {{ value2 }}
P:"Necesito interpolar valor1 solamente."
R: Anule el valor predeterminado, por ejemplo
- template:
src: template.yml.j2
dest: playbook.yml
vars:
value1: value1
da
shell> cat playbook.yml
key1: value1
key2: {{ value2 }}