【发布时间】:2021-04-28 17:28:17
【问题描述】:
我有一个对 mongo 副本和仲裁器通用的角色,并且为每个副本和仲裁器分别设置主机组,因为该角色应该支持同一主机和不同主机上的仲裁器。
主持人:
[replicas]
127.0.0.1
127.0.0.2
[arbiter]
127.0.0.2
角色内部的任务:
- name: Run only on replicas
debug msg=" Only on replica"
when: '"replicas" in group_names'
- name: Run only on the arbiter
debug: msg="Only on the arbiter"
when: '"arbiter" in group_names'
剧本:
- hosts: replicas
roles:
- role: "common"
- role: "replica"
- hosts: arbiter
roles:
- role: "common"
- role: "arbiter'
在副本上运行时的预期输出:
TASK [debug] *********************************************************************************************************************************************
ok: [127.0.0.1] => {
"msg": " Only on replica"
}
ok: [127.0.0.2] => {
"msg": " Only on replica"
}
TASK [debug(arbiter)] *********************************************************************************************************************************************
skipping: [127.0.0.1]
skipping: [127.0.0.2]
但未按预期跳过仲裁任务因为同一主机是副本组的一部分。以下是实际输出。 实际输出:
TASK [debug] *********************************************************************************************************************************************
ok: [127.0.0.1] => {
"msg": " Only on replica"
}
ok: [127.0.0.2] => {
"msg": " Only on replica"
}
TASK [debug(arbiter)] *********************************************************************************************************************************************
skipping: [127.0.0.1]
ok: [127.0.0.2] => {
"msg": " Only on replica"
}
如何在 playbook 委派的特定组上运行?
【问题讨论】: