私はこのようなものを置く変数があります:
_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') }}"
をシェルタスクの例に使用したい場合、評価されません。動的に作成された変数名を評価する方法はありますか-値を取得しますか?
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
私はあなたが探していると思います:
{{ vars[item ~ '_port'] }}