Ansible 中角色的串行执行

Serial execution of a role in Ansible

我有一个定义如下的剧本:

- name: install percona rpms
  hosts: imdp
  roles:
    - role1
    - role2
    - role3
    - role4

我只想让角色 3 中定义的任务串行执行。如果我在 role3 任务中定义 serial: 1,它不起作用。所有任务并行执行。但是如果我在主yaml(上面的yaml)中定义了serial: 1那么所有的角色都是串行执行的,这也是不需要的。

如何才能让 role3 串行执行?

"连载"仅在剧中可用。参见 Playbook Keywords。解决方案是将角色分配到更多的剧本中。例如

- name: Play 1. install percona rpms
  hosts: imdp
  roles:
    - role1
    - role2

- name: Play 2. install percona rpms
  hosts: imdp
  serial: 1
  roles:
    - role3

- name: Play 3. install percona rpms
  hosts: imdp
  roles:
    - role4

As example (emulation)

我的-tasks.yml:

---
- include_tasks: custom-tasks.yml
  when: inventory_hostname == item
  with_items: "{{ ansible_play_hosts }}"

自定义-tasks.yml:

---
- debug:
    var: inventory_hostname