ansible设置串行的方法

实验环境:ansible2.7

1、默认情况下,Ansible将尝试并行管理playbook中所有的机器。对于滚动更新用例,可以使用serial关键字定义Ansible一次应管理多少主机:

- name: test play
  hosts: webservers
  serial: 2
  gather_facts: False   // 获取主机相关信息 true|false
tasks: - name: task one comand: hostname - name: task two command: hostname 

 

在上面的例子中,如果我们在“WebServers”组中有4个主机,后面2个主机等到前面2个主机执行完后执行:

PLAY [webservers] ****************************************

TASK [task one] ******************************************
changed: [web2]
changed: [web1]

TASK [task two] ******************************************
changed: [web1]
changed: [web2]

PLAY [webservers] ****************************************

TASK [task one] ******************************************
changed: [web3]
changed: [web4]

TASK [task two] ******************************************
changed: [web3]
changed: [web4]

PLAY RECAP ***********************************************
web1      : ok=2    changed=2    unreachable=0    failed=0
web2      : ok=2    changed=2    unreachable=0    failed=0
web3      : ok=2    changed=2    unreachable=0    failed=0
web4      : ok=2    changed=2    unreachable=0    failed=0

 

2、还可以将serial关键字指定为百分比,表示每次并行执行的主机数占总数的比例:

- name: test play
  hosts: webservers
  serial: "30%"

 

其他用法详见官网:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html#id10

上一篇:Ansible常用模块


下一篇:Codeforces Round #764 (Div. 3)(CF1624)题解