web-dev-qa-db-fra.com

Évaluer le nom de variable dynamique dans ansible

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?

8
Jordan Borisov

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
17
abc
3
Ben Tse

Je pense que vous recherchez:

{{ vars[item ~ '_port'] }}
1
henry