我想知道是否有人找到了一个解决方案,如果库存组未定义或为空,将避免显示任何警告。
我只是想让剧本的一部分运行如果一个团体存在并且不是空的,跳过而没有警告如果没有。
请阅读https://github.com/ansible/ansible/issues/35255#issuecomment-388455001并测试备选方案,因为我花了很多时间试图找到解决此问题的方法。
到目前为止,当未定义组时,我无法找到任何方法来避免警告。
答案 0 :(得分:2)
我有点不确定我是否回答了正确的问题,但现在就去了。我解释"如果一个群体存在且不是空的"表示"当前正在执行的主机属于某个组"。
如果你打算问一些像#34;我可以从当前主机中找出任何其他主机是否属于当前主机不属于的组,"或者"当为某些组定义的主机无法访问时,我可以无错误地运行一个剧本,"那么我担心这不能回答你的问题:)
但是,根据当前主机是否属于某个群组来运行任务可以使用Ansible's default vars, 之一来完成groups
group_names
。
以下playbook包含两个任务,一个用于在当前主机属于组debug
时运行existent
任务,另一个用于在当前主机属于该组时运行调试任务{ {1}}。如输出所示,第一个任务运行,第二个任务不运行。
nonexistent
[existent]
localhost ansible_connection=local
- hosts: all
gather_facts: true
tasks:
- name: This command will run.
debug:
msg: "The group `existent_1` exists!"
when:
- "'existent_1' in groups"
- name: This command will not run.
debug:
msg: "The group `existent_1` exists and this host is in it!"
when:
- "'existent_1' in groups"
- "'existent_1' in group_names"
- name: This command will run.
debug:
msg: "The group `existent_2` exists and this host is in it!"
when:
- "'existent_2' in groups"
- "'existent_2' in group_names"
- name: This command will not run.
debug:
msg: "The group `nonexistent` exists!"
when:
- "'nonexistent' in groups"
- "'nonexistent' in group_names"
答案 1 :(得分:1)
不确定这是否会抑制警告,但应该完成第一部分(“如果有一个组并且不为空,则使剧本的一部分运行 ”):
- hosts: all
gather_facts: true
tasks:
- name: "This command will only run if {{ group_to_test }} is a non-empty group that exists"
debug:
msg: The group 'existent' exists and contains hosts!
when: group_to_test in groups and groups[group_to_test]
进行一次测试,让我知道她是否在压制警告!!
很显然,group_to_test
必须替换为常量字符串或设置为变量/事实/默认值。