声明多变量替换时的ansible

时间:2017-12-29 15:31:30

标签: ansible

我正在运行一个针对动态广告资源的剧本,因此在运行游戏手册时过滤掉不同的主机并不是我所做的。

话虽如此,我已根据'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}。

我不确定这是否可行或如何实现。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

假设您有要检查的主机名列表:

---
- hosts: all
  vars:
    hostname_list: ["server01", "server01", "server01"]

  tasks:
    - debug:
        msg: "test pass"
      when: ansible_hostname not in hostname_list