ansible-当只有一个主机满足条件时,为所有主机设置事实
使用Ansible v2.9.12 问题:当至少有一个主机满足特定条件时,如何为游戏中的所有主机设置变量 例如:ansible-当只有一个主机满足条件时,为所有主机设置事实,ansible,Ansible,使用Ansible v2.9.12 问题:当至少有一个主机满足特定条件时,如何为游戏中的所有主机设置变量 例如: - hosts: - host1 - host2 - host3 - host4 tasks: - stat: path: /tmp/file register: something - set_fact something: true when: something <
- hosts:
- host1
- host2
- host3
- host4
tasks:
- stat:
path: /tmp/file
register: something
- set_fact
something: true
when: something <at least one of the hosts has /tmp/file>
-主机:
-旅社1
-旅社2
-旅社3
-旅社4
任务:
-统计:
路径:/tmp/文件
登记员:什么
-设定事实
有些事:真的
什么时候
现在,只有host4的文件系统中存在
/tmp/file
。在这种情况下,如何设置所有主机的事实?在Vladimir Botka的帮助下:
---
- hosts:
- test-multi-03
- test-multi-02
- test-multi-01
tasks:
- name: stat file
stat:
path: /tmp/file
register: status
- block:
- name: create dictionary
set_fact:
status: "{{ dict(keys|zip(values)) }}"
vars:
keys: "{{ ansible_play_hosts }}"
values: "{{ ansible_play_hosts|
map('extract', hostvars, ['status','stat','exists'])
| list }}"
- name: set fact when file is present on at least one host, for all hosts
set_fact:
something: yeah
when: status.values() | list is any
run_once: true
- debug:
msg: "{{ something }}"
when: something is defined
您肯定希望首先将
register:
添加到stat:
中,否则您无法告诉任何有关其结果的信息;也请告诉我你尝试了什么,产生了什么错误,这实际上是一个复制品。而不是在以下情况下失败:。。。当:。。。是否有任何@mdaniel不是所有的东西都需要自己的工作,对吗?穿过树林,我再也看不见树了。不管怎样,弗拉基米尔,你给我指明了正确的方向,我已经成功了。