Ansible-按照我想要的顺序与主持人一起玩
运行playbook时,Ansible会随机将节点设置为第一个、第二个和第三个Ansible-按照我想要的顺序与主持人一起玩,ansible,Ansible,运行playbook时,Ansible会随机将节点设置为第一个、第二个和第三个 TASK [setup] ******** ok: [node-p02] ok: [node-p03] ok: [node-p01] 如何配置Ansible以确保它以排序的顺序与主机一起执行?例如: TASK [setup] ******** ok: [node-p01] ok: [node-p02] ok: [node-p03] Serial:1不是一个选项,因为它会减慢播放速度,而且我的playbook在一次
TASK [setup] ********
ok: [node-p02]
ok: [node-p03]
ok: [node-p01]
如何配置Ansible以确保它以排序的顺序与主机一起执行?例如:
TASK [setup] ********
ok: [node-p01]
ok: [node-p02]
ok: [node-p03]
Serial:1
不是一个选项,因为它会减慢播放速度,而且我的playbook在一次播放中可用于3个节点。我认为另一种可能性是将主机中的确切主机名作为列表,而不是组。然而,其他答案更符合Ansible方法
---
- hosts:
- node-p01
- node-p02
- node-p03
编辑:最好的解决方案是在“主机列表”中,但如果必须对主机列表应用特定的操作,或者您不能使用Ansible 2.4,则此解决方案可以为您提供更多的自由度
由于Ansible 2.2,您可以使用Ansible\u play\u主机
或Ansible\u play\u批处理
和排序
---
- hosts: "{{ ansible_play_hosts | sort() }}"
发件人:
ansible\u play\u hosts
是当前播放中仍处于活动状态的所有主机的完整列表
ansible\u play\u batch
作为主机名列表提供,这些主机名在当前播放“批次”的范围内。批量大小由serial
定义,未设置时相当于整个播放(使其与ansible\u play\u hosts
相同)
适用于Ansible 2.4及更高版本:
这是现在的默认行为,ansible将按照清单
文件中提到的顺序播放主机。Ansible还提供了一些内置方法,您可以使用顺序来控制它:
- hosts: all
order: sorted
gather_facts: False
tasks:
- debug:
var: inventory_hostname
顺序的可能值为:
- 库存:默认值。订单由库存“提供”
- 反向库存:顾名思义,这将反向库存提供的订单
- 排序:主机按名称的字母顺序排序
- 反向排序:主机按名称按逆字母顺序排序
- 洗牌:主机在每次运行时随机排序
来源:有什么特别的原因让你必须按顺序运行节点吗?当然没有真正的原因,但如果你愿意,你可以编写自己的标准输出插件,它将收集主机的任务结果,并立即按顺序打印。也许另一种执行策略可以帮助你:playbook strategies似乎无法解决这个问题。我的playbook在节点上创建主/从/从配置。设置主节点是因为它位于第一位。在我的情况下,它将是节点p02。但我希望它是node-p01。不幸的是,我在我的库存文件中默认看到一个随机订单,而不是“提供的”。使用ansible 2.6.0、python 2.7.10.0,有趣的是,根据文档,它仍然应该默认为库存,这可能是因为您的回购协议中有其他模块/配置将其搞乱了吗?