web-dev-qa-db-ja.com

Ansibleで動的変数名を評価する

私はこのようなものを置く変数があります:

_vars/main.yml
hello_port: 80
world_port: 81
_

私のansbileファイルで、変数をロードします

_vars_files:
  - ./vars/main.yml
_

これは私がm_nameを初期化する方法です:

_ - name: set_fact
     set_fact:
        m_name:
          - 'hello'
          - 'world'
_

その後、with_itemsを使用して反復処理を行うタスクがあります。

_ - debug:
      msg: "{{ (item + '_port') }}"
   with_items: "{{ m_name }}"
_

しかし、私は出力として持っています

_hello_port
world_port
_

それらの値ではありません。


OKデバッグvarを使用すれば機能することがわかりました。しかし、この式"{{ (item + '_port') }}"をシェルタスクの例に使用したい場合、評価されません。動的に作成された変数名を評価する方法はありますか-値を取得しますか?

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

私はあなたが探していると思います:

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