Ansible - 如何在运行playbook时控制主机的顺序

时间:2017-02-22 08:57:33

标签: ansible

我们说我们在库存文件中定义了两台机器:

[db-server-preprod] 172.16.0.1 172.16.0.2

如果我针对该组运行一个剧本,则如果序列为0则在两台机器上同时运行,或者如果为1则顺序运行,并且该顺序似乎是在该组中定义IP的顺序。

但问题是我是否可以控制定义机器上的剧本执行顺序?

对于其中一台机器(主机)而言,相同角色的行为略有不同,但与其他所有机器相比,重要的是我想成为主机的机器将是第一部执行该机器的机器。

到目前为止我的想法:

  • 创建不同的组名,其中IP的顺序是相反的,并且基于在一个主机或另一个主机上运行的需求,但缺点是我认为我需要复制group_vars,因此每个{{1}会有一个} variant +所有其他环境。
  • 将安装分为两个不同的角色 - 一个用于主服务器和备用服务器,并根据需要运行我想要的那台机器。

1 个答案:

答案 0 :(得分:2)

您可以在剧本main.yml“serial = 1”中使用,以便逐个执行,并且您可以确保该剧本将在主节点上执行,之后它将在其他节点上执行。

- hosts: allnodes
  remote_user: "{{user}}"
  become: True
  serial: 1
  roles:
  - role: your_role