我有一个如下的清单文件。
[all:vars]
ansible_user=root
zookeeper_new=true
[zookeepers]
10.16.0.31
10.16.0.32
在我已声明任务的 .yml 文件中, 我想首先在服务器31中运行所有这些任务,然后在服务器32上运行。如果可能的话,我该怎么办?
当前,它在两个服务器上都运行单个任务,然后跳转到下一个任务。作为示例;
TASK [Zookeeper/Zookeeper-New : Stop and disable existing zookeeper service] ***
ok: [10.16.0.31]
ok: [10.16.0.32]
TASK [Zookeeper/Zookeeper-New : Find previous zookeeper version directories] ***
ok: [10.16.0.32]
ok: [10.16.0.31]
相反,我想要的是
TASK [Zookeeper/Zookeeper-New : Stop and disable existing zookeeper service] ***
ok: [10.16.0.31]
TASK [Zookeeper/Zookeeper-New : Find previous zookeeper version directories] ***
ok: [10.16.0.31]
TASK [Zookeeper/Zookeeper-New : Stop and disable existing zookeeper service] ***
ok: [10.16.0.32]
TASK [Zookeeper/Zookeeper-New : Find previous zookeeper version directories] ***
ok: [10.16.0.32]
答案 0 :(得分:1)
您应该考虑为什么需要这样做,以及是否可以使用“常规”方式实现目标。
如果您确实需要按照自己的描述进行操作,请在剧本上设置serial: 1
。这会使一个主机紧随另一个主机。
例如:
---
- name: test play
hosts: zookeepers
serial: 1
tasks:
- name: task one
command: hostname
检查文档以获取更多信息: