ansible - variável dentro da variável
Versão 1.9.2 Ansible.
O Ansible suporta expansão variável dentro de uma variável enquanto a avalia.
Eu tenho uma tarefa para baixar 3 arquivos zip do Artifactory.
Em vez de escrever três tarefas separadas dentro do papel, usei o loop do ansible no manual. No default / main.yml da função Ansible, tenho todas as variáveis necessárias definidas / disponíveis para a função, ou seja, jmeterplugins_extras_artifactory_url e outras (standard / webdriver) são visíveis paraperf_tests Função.
---
#- 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' }
Mas com o código acima, estou recebendo um erro (como mostrado abaixo):
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
Não ansible suporta expansão / avaliação de variável se uma variável contiver outra variável (especialmente quando estou usando um loop).
Eu só não quero expandir minha tarefa de loop simples em três tarefas de nome diferente para baixar arquivos zip para jmeterplugins_extras, jmeterplugins_standard e jmeterplugins_webdriver separadamente. Parece que o erro está relacionado ao Jinja.
Como posso usar o valor de vargiga em outra variável, isto é, sevar contémgiga, então devo obter o valor da variável "special_giga_variable" ({{special _ {{var}} _ variable}})? onde var foi definido em defaults / main.yml como:
var: giga