要从变量中获取变量名称,可以使用Ansible的vars
属性和set_fact
模块。
以下是一个示例代码:
---
- hosts: localhost
gather_facts: False
vars:
var1: "foo"
var2: "bar"
tasks:
- name: 获取变量名称
set_fact:
var_name: "{{ item }}"
with_items:
- "{{ vars.keys() | list }}"
when: vars[item] == "foo"
- name: 打印结果
debug:
var: var_name
在上面的示例中,我们定义了两个变量var1
和var2
,然后使用set_fact
模块循环遍历vars
字典的键,并将符合条件的变量名称存储在var_name
变量中。条件是vars[item] == "foo"
,即当变量的值等于"foo"时才会将变量名称存储在var_name
中。
最后,使用debug
模块打印var_name
变量的值,即得到了我们想要的结果。
运行以上代码,输出结果应该是:
TASK [打印结果] ******************************************************************************************************************
ok: [localhost] => {
"var_name": "var1"
}
这表明变量var1
的值为"foo",并且我们成功地从变量中获取到了变量名称。