J'ai des vars où je mets quelque chose comme ça:
vars/main.yml
hello_port: 80
world_port: 81
dans mon fichier ansbile je charge les vars avec
vars_files:
- ./vars/main.yml
Voici comment j'initialise m_name:
- name: set_fact
set_fact:
m_name:
- 'hello'
- 'world'
et après cela, j'ai la tâche d'itérer en utilisant with_items:
- debug:
msg: "{{ (item + '_port') }}"
with_items: "{{ m_name }}"
Mais j'ai comme sortie
hello_port
world_port
pas leurs valeurs.
OK je trouve que si j'utilise debug var ça marche. Mais si je veux mettre cette expression "{{ (item + '_port') }}"
pour un exemple dans la tâche Shell, elle ne l'évalue pas. Existe-t-il un moyen d'évaluer le nom des variables créées dynamiquement - pour obtenir la valeur?
https://docs.ansible.com/ansible/2.5/plugins/lookup/vars.html
- name: Show value of 'variablename'
debug: msg="{{ lookup('vars', 'variabl' + myvar)}}"
vars:
variablename: hello
myvar: ename
{{ hostvars[inventory_hostname][item + '_port'] }}
http://docs.ansible.com/ansible/latest/faq.html#how-do-i-access-a-variable-name-programmatically
Je pense que vous recherchez:
{{ vars[item ~ '_port'] }}