play高级用法
控制并发更新主机的数量
# 指定具体数字
---
- name: test1 serial
hosts: all
serial: 2 # 每次同时处理2个主机
max_fail_percentage: 50 # 当两台机器中一台执行失败,既终止task
或者
#也可以使用百分比进行控制
---
- name: test2 serail
hosts: all
serial: "20%" #每次只同时处理20%的主机
loop循环
loop循环创建用户,ansible引用变量是“{{ 变量名 }}”,loop的默认变量名是item
cat users.yml
---
- name: 批量创建用户
hosts: node1
tasks:
- name: 创建用户task
user:
name: "{{ item }}"
state: present
loop:
- testuser1
- testuser2
ansible错误控制
# 结果有3种,ok(无变化) changed(有变化) failed(失败)
1.task控制的条件判断错误控制
when -> skip
changed_when -> changed/ok
failed_when -> failed
2.网络相关的错误
unreachable,一般和ssh端口,ssh密码,ssh免密,sudo提权配置等等网络和ssh服务配置相关的部分
3.task的错误忽略
ignore_errors -> ignored,忽略预期的错误,我们可能预料到task的位置会出现错误,所以我们为了让执行这
个task的节点可以继续运行下去,我们需要对task设置错误忽略
4.错误控制结合使用的内容
register变量
facts变量
magic变量
debug模块
5.错误控制里面有个错误控制三件套
block: 定义一组运行的task
rescue: 如果block里面的task运行失败了,将会使用rescue部分定义的task进行回滚(roll out)
always: 不管block和rescue运行的结果如何,都会执行。
ansible-handers
# play层面设置force_handlers: yes
# 防止handlers遇到palybook执行错误,不执行hanlers,(因为handlers默认等所有任务执行完成并成功后才执行)
标签:play,task,name,错误,高级,用法,ssh,loop
From: https://www.cnblogs.com/kkit/p/18338712