【发布时间】:2021-08-17 10:37:19
【问题描述】:
我正在思考一些我可能过于复杂的事情。
我需要检查我的任何主机是否有ansible_virtualization_type == "openvz"
如果是这种情况,所有主机都应执行特定任务。
我现在正在尝试设置一个事实 (virt_list),其中包含主机列表及其虚拟化类型在 localhost:
- name: Set fuse on virtualization OpenVZ
set_fact:
virt_list:
host: "{{item}}"
type: "openvz"
when: hostvars[item].ansible_virtualization_type == "openvz"
with_items: "{{ groups['all'] }}"
delegate_to: localhost
delegate_facts: true
但这不起作用(本剧中的两个主机都在openvz上):
TASK [roles/testvirt : debug vars ansible_virtualization_type ] ****************************
ok: [host1] => {
"ansible_virtualization_type": "openvz"
}
ok: [host2] => {
"ansible_virtualization_type": "openvz"
}
TASK [roles/testvirt : debug vars virt_list ] **********************************************
ok: [host1] => {
"msg": [
{
"host": "host1",
"type": "openvz"
}
]
}
ok: [host2] => {
"msg": [
{
"host": "host2",
"type": "openvz"
}
]
}
应该有更简单的方法,可以直接用jinjia2来组合列表。
谁有建议?
【问题讨论】:
标签: ansible ansible-facts ansible-template