我想创建两个剧本,一个用于停止环境,另一个用于启动它。
环境的一部分是 RabbitMQ 集群,对于其停止/启动顺序非常重要,特别是最后一个停止的节点需要是第一个启动的节点。
我想知道是否有一种方法可以指定针对组运行任务的相反顺序。 这样我就可以使用序列号 1 来停止,并使用序列号 1 开始并反转组顺序。
我还没有找到一种方法来做到这一点,只能以相反的顺序定义rabbitmq主机组两次(使用不同的名称),这看起来有点令人反感。
还尝试了以下操作:
- hosts: "{ myhostsgroup | sort(reverse=False) }"
serial: 1
还有
- hosts: "{ myhostsgroup | reverse }"
serial: 1
但无论尝试哪种情况及其变体(reverse=True,reverse|list),结果都保持不变
任何帮助将不胜感激。
最佳答案
您可以在运行时创建动态组:
---
- 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:
关于Ansible - 任务系列 1 逆序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45301295/