如何按顺序对主机进行ansible循环

How to make ansible loop over hosts sequentially

我有一组任务要在一组主机上按顺序执行。

示例如下。

hosts: all
tasks:
- name: do some work
  include_tasks: tasks_here.yml
  loop: "{{ vars[play_hosts] }}"

ansible-playbook main.yml --limit myhosts

我希望这组任务将在第一台主机上执行,然后在第二台主机上执行……但实际上这些任务是在 "limit" 中的所有主机上同时执行的。 我怀疑这是因为我使用了限制,但我需要它。

那我该怎么办?

默认情况下,如指定的那样here:

plays run with a linear strategy, in which all hosts will run each task before any host starts the next task.

您可以使用策略 serial: 1 在每个主机上按顺序执行任务。

例如:

- hosts: all
  serial: 1
  tasks:
    ...