我要同时更新多个主机,但是有一个局限性...
我必须从一个公共(public)存储库中下载工件,同时进行的下载不得超过3个!
我目前的解决方案是将整个剧本限制为最多三个并发任务
strategy: linear
serial: 3
是否可以仅针对特定任务步骤而不是整个剧本来限制并发性?
最佳答案
没有直接的方法。仅解决方法,例如run_once
与delegate_to
一起循环,或将任务与循环相乘,并且每个主机仅执行一项。
有关详细信息,请参见问题#12170,其状态为“无法修复”。delegate_to
循环:
- mytask: ..
delegate_to: "{{item}}"
run_once: true
# many diff ways to make the loop
with_inventory_hostnames: all
倍增的任务:
- name: target task
debug: msg="Performing task on {{ inventory_hostname }}, item is {{ item }}"
with_items: "{{ play_hosts }}"
when: "hostvars[item].inventory_hostname == inventory_hostname"
关于concurrency - 限制Ansible Playbook任务并发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48642853/