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
我有一个定义如下的剧本:
- 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