Ansible - 任务系列 1 逆序

标签 ansible

我想创建两个剧本,一个用于停止环境,另一个用于启动它。

环境的一部分是 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/

相关文章:

python - 如何在 Python/Ansible 中用模式 {{ '{{' }}/{{ '}}' }} 替换左大括号和右大括号 {{ }}

linux - ANSIBLE “ERROR! the field ' 主机是必需的,但未设置”

正则表达式匹配 JCL 工作卡或整张卡的最后一行

ansible - 如何使用ansible安装fail2ban?

ansible - 将变量从就地渲染的 jinja2 模板包含到剧本中,无需中间文件

json - 如何使用 set_fact 打印数组变量以在 ansible add_host 模块中使用

ansible - Ansible uri 模块中的多个 status_code

Ansible 在 Ubuntu 上使用 apt 更新不可靠

linux - 是否有一些相当于 "failed_when"的 Ansible 成功

azure - 使用 ansible playbook 更新 azure windows vm 中的磁盘存储类型