ansible - variable dentro de variable
Ansible 1.9.2 versión.
¿Ansible admite la expansión de variables dentro de una variable mientras la evalúa?
Tengo la tarea de descargar 3 archivos zip de Artifactory.
En lugar de escribir 3 tareas separadas dentro del rol, utilicé el bucle de ansible en el libro de jugadas. En default / main.yml de la función Ansible, tengo todas las variables necesarias definidas / disponibles para la función, es decir, jmeterplugins_extras_artifactory_url y otras (estándar / controlador web) son visibles paraperf_tests papel.
---
#- Download and install JMeterPlugins
# Use get_url when Ansible is 2.0+ is available on the machine (otherwise, we can't use get_url) thus, using wget.
- name: Download JMeterPlugins-*
command: wget {{ jmeterplugins_{{ item.plugin }}_artifactory_url }}
chdir="{{ common_download_dir }}"
creates="{{ common_download_dir }}/{{ jmeterplugins_{{ item.plugin }}_file }}"
with_items:
- { plugin: 'extras' }
- { plugin: 'standard' }
- { plugin: 'webdriver' }
Pero con el código anterior, obtengo un error (como se muestra a continuación):
15:58:57 TASK: [perf_tests | Download JMeterPlugins-*] *********************************
15:58:57 <jmeter01.super.fast.jenkins> ESTABLISH CONNECTION FOR USER: cmuser on PORT 22 TO jmeter01.super.fast.jenkins
15:58:57 fatal: [jmeter01.super.fast.jenkins] => Failed to template wget {{ jmeterplugins_{{ item.plugin }}_artifactory_url }} chdir="{{ common_download_dir }}" creates="{{ common_download_dir }}/{{ jmeterplugins_{{ item.plugin }}_file }}": template error while templating string: expected token 'variable_end', got '{'
15:58:57
15:58:57 FATAL: all hosts have already failed -- aborting
15:58:57
15:58:57 PLAY RECAP ********************************************************************
15:58:57 to retry, use: --limit @/home/cmuser/perf_tests.retry
15:58:57
15:58:57 jmeter01.super.fast.jenkins : ok=23 changed=6 unreachable=1 failed=0
No ansible admite la expansión / evaluación de variables si una variable contiene otra variable (especialmente cuando estoy usando un bucle).
Simplemente no quiero expandir mi tarea de bucle simple en 3 tareas de nombres diferentes para descargar archivos zip para jmeterplugins_extras, jmeterplugins_standard y jmeterplugins_webdriver por separado. Parece que el error está relacionado debido a Jinja.
¿Cómo puedo usar el valor de vargiga en otra variable, es decir, sivar contienegiga, entonces debería obtener el valor de la variable "special_giga_variable" ({{especial _ {{var}} _ variable}})? donde var se definió en defaults / main.yml como:
var: giga