我正在尝试使用和了解节流关键字的工作原理。
下面是我如何使用它(test-playbook.yaml)。
---
- name: Test throttle
hosts: all
tasks:
# list of pre tasks
- name: Execute sequentially
throttle: 1
block:
- include_tasks: task-1.yaml
- include_tasks: task-2.yaml
# a task using some module
# a task using some module
# list of post tasks
执行ansible-playbook --inventory some-inventory --limit host1:host2:host3
我期望在任务(按顺序执行)中,--limit 中指定的所有主机都将按顺序执行,即 host1 将完成块中的所有任务,然后是 host2,然后是 host3
但是它们是并行执行的(默认的 Ansible 行为)。
有人可以帮助理解油门行为吗?我错过了一些配置吗?
forks/serial
有默认值。
以及如何实现顺序行为。
ansible-playbook的默认行为是线性策略:
油门的目的是“限制特定任务的工作人员数量......使用油门来限制可能是 CPU 密集型或与速率限制 API 交互的任务”。
例如,默认情况下,在所有主机上并行执行任务(受限于串行到forks )
可以看到所有主机都并行执行了任务
如果通过油门限制执行
可以看到任务的执行是序列化的
在开始实验之前,请确保时间已同步。
问:“使用 include_tasks 我没有得到相同的行为。所有包含的任务都在并行运行。 ”
答:我无法重现您的问题。鉴于文件
任务
给
可以看到包含的任务的执行是序列化的。这可以按预期工作,因为block中允许使用关键字throttle。将这样的关键字应用于块与将关键字应用于块中的所有任务相同。