【发布时间】:2022-05-02 20:30:38
【问题描述】:
我已经使用另外两个定义的 ansible 变量构造了一个 ansible 变量。构造的变量在 vars/main.yml 中定义,我想访问 vars/main.yml 中定义的值。 vars/main.yml
---
var1_var2: "some value"
现在,我构造变量
---
- name: Construct and get the value
hosts: localhost
tasks:
- include_vars: "vars/main.yml"
- set_fact:
variable1: "var1"
variable2: "var2"
- set_fact:
final_variable: "{{ variable1 }}_{{ variable2 }}"
- set_fact:
ultimate_variable: "{{ final_variable }}"
如果我使用 -vvv 标志运行 playbook,我可以看到 ultimate_variable 设置为 var1_var2,而我想获取 vars/main.yml 中定义的值
即some value
TASK [set_fact]
ok: [localhost] => {
"ansible_facts": {
"variable1": "var1",
"variable2": "var2"
},
"changed": false,
"failed": false
}
TASK [set_fact] task path: /home/ubuntu/test.yml:78
ok: [localhost] => {
"ansible_facts": {
"final_variable": "var1_var2"
},
"changed": false,
"failed": false
}
TASK [set_fact]
ok: [localhost] => {
"ansible_facts": {
"ultimate_variable": "var1_var2"
},
"changed": false,
"failed": false
}
【问题讨论】:
-
即使这在技术上是可行的,但请注意,您正在创建难以阅读、测试和维护的代码!你确定你的问题不能用标准的dict/list/collection更好地解决吗?
-
@jangroth 如果我能够在任务的
vars中使用字典,我可以避免整个方法。 stackoverflow.com/questions/50477012/…
标签: ansible ansible-inventory ansible-facts