在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
答案 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
第二次播放 - 它用于在任务运行之间重读主机视频。如果您不使用串行运行,则变量的值对于所有主机都是相同的。