我要同时更新多个主机,但是有一个局限性...

我必须从一个公共(public)存储库中下载工件,同时进行的下载不得超过3个!

我目前的解决方案是将整个剧本限制为最多三个并发任务

strategy: linear
serial: 3

是否可以仅针对特定任务步骤而不是整个剧本来限制并发性?

最佳答案

没有直接的方法。仅解决方法,例如run_oncedelegate_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/

10-10 14:43
查看更多