我有vars,我把它放在这样的地方:
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
不是他们的价值观。
好的,我发现如果我使用debug var就可以了。但是,如果我想将此表达式"{{ (item + '_port') }}"
作为shell任务中的示例,则不会对其进行评估。有没有办法评估动态创建的变量名称 - 获取值?
答案 0 :(得分:10)
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
答案 1 :(得分:2)
{{ hostvars[inventory_hostname][item + '_port'] }}
http://docs.ansible.com/ansible/latest/faq.html#how-do-i-access-a-variable-name-programmatically
答案 2 :(得分:1)
我认为您正在搜索:
n