我正在运行一个针对动态广告资源的剧本,因此在运行游戏手册时过滤掉不同的主机并不是我所做的。
话虽如此,我已根据'ansible_hostname'事实跳过/执行某些任务。举个例子:
- name: say 'yes' to every server except server0[12]
shell: |
echo 'yes'
when: '"server01" not in ansible_hostname and
"server02" not in ansible_hostname'
- name: say 'no' for only server0[12]
shell: |
echo 'no'
when: '"server01" in ansible_hostname or
"server02" in ansible_hostname'
这对我有用,但不太可持续。我正在寻找一种动态(变量替换?)的方法。因此,例如,我可以保留一个变量,它是[server01,server02]的列表,我可以执行{{var}}的for循环{不在ansible_hostname}。
我不确定这是否可行或如何实现。有什么想法吗?
答案 0 :(得分:1)
假设您有要检查的主机名列表:
---
- hosts: all
vars:
hostname_list: ["server01", "server01", "server01"]
tasks:
- debug:
msg: "test pass"
when: ansible_hostname not in hostname_list