2017-07-25 18 views
2

我想创建两个剧本,一个停止环境,另一个启动它。Ansible - 任务序列1反向订单

环境的一部分是一个RabbitMQ集群,停止/启动顺序非常重要,特别是停止的最后一个节点需要成为第一个启动的节点。

我想知道是否有一种方法来指定相反的顺序来针对组运行任务。 这样我可以将序列号1应用于停止,并以序列1和反向组序列开始。

我还没有找到办法做到这一点,但要定义rabbitmq主机组两次(以不同的名称),倒序,这似乎有点令人不快。

还企图以下:

- hosts: "{ myhostsgroup | sort(reverse=False) }" 
    serial: 1 

而且

- hosts: "{ myhostsgroup | reverse }" 
    serial: 1 

但结果保持不变,取其情况及其变化(反向=真,反向|列表)试图

任何帮助将不胜感激。

回答

5

可以在运行时创建动态组:

--- 
- hosts: localhost 
    gather_facts: no 
    tasks: 
    - add_host: 
     name: "{{ item }}" 
     group: forward 
     with_items: "{{ groups['mygroup'] }}" 

    - add_host: 
     name: "{{ item }}" 
     group: backward 
     with_items: "{{ groups['mygroup'] | reverse | list }}" 

- hosts: forward 
    gather_facts: no 
    serial: 1 
    tasks: 
    - debug: 

- hosts: backward 
    gather_facts: no 
    serial: 1 
    tasks: 
    - debug: 
+0

感谢,正是我一直在寻找。 – Olivier