如何按顺序对主机进行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:
...
我有一组任务要在一组主机上按顺序执行。
示例如下。
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:
...