在Ansible中访问任务中的主机变量

在Ansible中访问任务中的主机变量,ansible,ansible-inventory,Ansible,Ansible Inventory,我有一个主机组,它有如下所示的主机变量 [test:children] test1 test2 test3 [test:vars] clean_images=true - name: clean docker images template: dest: "/etc/systemd/system/{{ item.name }}" with_items: - { name: "{{ service_name }}.service" } - name: start se

我有一个主机组,它有如下所示的主机变量

[test:children]
test1
test2
test3

[test:vars]
clean_images=true
- name: clean docker images
  template:
    dest: "/etc/systemd/system/{{ item.name }}"
  with_items:
  - { name: "{{ service_name }}.service" }



- name: start service
  systemd:
    name: "{{ service_name }}.service"
    state: started
    enabled: yes
  when: hostvars['test'].clean_images is defined
我在角色中定义了一个任务,如下所示

[test:children]
test1
test2
test3

[test:vars]
clean_images=true
- name: clean docker images
  template:
    dest: "/etc/systemd/system/{{ item.name }}"
  with_items:
  - { name: "{{ service_name }}.service" }



- name: start service
  systemd:
    name: "{{ service_name }}.service"
    state: started
    enabled: yes
  when: hostvars['test'].clean_images is defined
这是一个简单的任务,我根据主机清理docker图像。我有一个剧本,它在一组不同的主机组[test_services]中执行上述角色。如果任务遇到[test:children]中定义的任何主机组,我希望任务-name:start service运行。检查是否已将变量clean_images=true添加到测试组中,以执行条件检查

但是我上面包含的when语句给了我一个错误

fatal: [xx.xx.xx.xx]: FAILED! => {"msg": "The conditional check 'hostvars['test'].clean_images is defined' failed. The error was: error while evaluating conditional (hostvars['test'].clean_images is defined): \"hostvars['test']\" is undefined\n\nThe error appears to have been in 'main.yml'
我在使用构建这个条件语句时遇到了一个问题,当时,任何帮助都将是巨大的

when: hostvars['test'].clean_images is defined
应该是:

when: clean_images is defined and clean_images
因为没有名为
test
的主机,因此
test
host变量将永远不存在。但是,属于
test
组的所有主机都将定义
clean_映像