Ansible修改全局应用变量

时间:2017-01-11 11:20:18

标签: variables ansible

在Ansible 2.2上,我想实现这个逻辑:

---
- name "PLB1"
- hosts: localhost
- tasks:
    ... init variable/fact X ...

- name "PLB2"
- hosts: huge_group
- tasks:
    ... each run add something to variable X ...

- name "PLB3"
- hosts: localhost
- tasks
   - debug:
       msg="{{X}}"

我不明白如何定义然后修改全局变量(或事实)X. 你能帮帮我吗?

的Riccardo

1 个答案:

答案 0 :(得分:1)

Ansible中没有全局变量 请再看一下你的任务 - 你真的需要它们吗?

存在hostvars种解决方法:

---
- hosts: localhost
  gather_facts: no
  tasks:
    - set_fact:
        counter: 0

- hosts: mygroup
  gather_facts: no
  serial: 1
  tasks:
    - set_fact:
        counter: "{{ hostvars['localhost'].counter | int + 1 }}"
      delegate_to: localhost
      delegate_facts: yes

- hosts: localhost
  gather_facts: no
  tasks:
    - debug:
        var: counter

注意serial: 1第二次播放 - 它用于在任务运行之间重读主机视频。如果您不使用串行运行,则变量的值对于所有主机都是相同的。