Ansible: el filtro predeterminado no resuelve las variables en Ansible 1.8.2

Creado en 19 dic. 2014  ·  3Comentarios  ·  Fuente: ansible/ansible

Tipo de problema:

Informe de error

Versión Ansible:

1.8.2

Ambiente:

RHEL 5

Resumen:

El filtro predeterminado no resuelve las variables definidas en el inventario.

Por ejemplo, si tengo definida en mi archivo de inventario la siguiente variable:

app_install_dir=/prueba

Mi libro de jugadas tiene esto y "alguna variable" no está definida:

dest_dir="{{ alguna variable | predeterminado('{{app_install_dir}}/DATA') }}"

Al ejecutar el libro de jugadas, el valor predeterminado no resuelve "app_install_dir"

Esto solía funcionar en Ansible 1.7.1.

Pasos para reproducir:

1) Defina una variable en el inventario llamada "test_directory=/tmp/testdir"
2) En el libro de jugadas, tenga la tarea de crear un directorio definido por la variable dest={{ undefined_variable | predeterminado('{{directorio_de_prueba}}') }}
3) Después de ejecutar el libro de jugadas, no puede resolver el valor de "test_directory"

Resultados previstos:

El filtro predeterminado debería poder resolver variables

Resultados actuales:

El filtro predeterminado no resuelve las variables definidas en el inventario

Comentario más útil

Normalmente no veo publicaciones en tickets cerrados, pero un usuario de IRC me envió un ping sobre esto:
dest={{ undefined_variable | default(test_directory + '/subdir') }}

Todos 3 comentarios

Posible malentendido

¡Hola!

Muchas gracias por su envío a Ansible. Sinceramente significa mucho para nosotros.

Creemos que el ticket que ha presentado se está malinterpretando un poco, ya que una cosa funciona de manera un poco diferente a lo indicado.

dest={{ undefined_variable | default('{{test_directory}}') }}

es una expresión inválida, no puede anidar {{ }}, lo que probablemente quiera es lo siguiente:

dest={{ undefined_variable | default(test_directory) }}

En el futuro, este podría ser un tema más adecuado para la lista de usuarios, que también puede publicar aquí si desea obtener más ayuda con lo anterior.

¡Gracias una vez más por esto y por su interés en Ansible!

@bcoca : es bueno saberlo, pero ¿eso significa que no podemos concatenar una variable y un literal de forma predeterminada? Algo como: dest={{ undefined_variable | default('{{test_directory}}/subdir') }} (pero no válido ;-)

Normalmente no veo publicaciones en tickets cerrados, pero un usuario de IRC me envió un ping sobre esto:
dest={{ undefined_variable | default(test_directory + '/subdir') }}

¿Fue útil esta página
0 / 5 - 0 calificaciones