一.循环
循环迭代任务
1.简单迭代
loop: ##循环遍历表
- user1
- user2
- user3
test:
vim user.yml
---
- name: create user
hosts: westos
tasks:
- name: useradd
user:
name: "{{item:name}}"
state: present
loop:
- user1
- user2
- user3
2.循环散列字典或表
loop: ##循环遍历字典
- name: user1
uid: 1005
- name: user2
uid: 1008
- name: user3
uid: 1089
test:
vim user.yml
---
- name: create user
hosts: 172.25.254.143
tasks:
- name: useradd
user:
name: "{{item['name']}}"
uid: "{{item['uid']}}"
state: present
loop:
- name: user1
uid: 1005
- name: user2
uid: 1008
- name: user3
uid: 1089
ansible localhost -m setup ##查看事实变量
二.条件
when
- 条件1
- 条件2
条件判断
= value == "字符串" value == 数字
<
>
<=
>=
!=
is defined ##变量存在
is not defined ##变量不存在
in value is in value ##value为
not in value is not in value ##value不为
bool 变量
value ##value的值为true
not value ##value的值为false
value in value2 ##value的值在value2中
ignore_errors ##出现错误忽略
register:bianliang ##指示变量
bianliang = 0 ##等于0即执行成功
多条件组合中
when中变量表示: westos.rc == 0
when:
条件1and条件2
- 条件1
- 条件2
when:
条件1 or 条件2
when:
条件1
or
条件2
测试题:
建立playboook
- 建立大小为1500M名为exam_lvm的lvm在westos组中
- 如果westos组不存在请输出 ;
westos is not exist
*如果组大小不足1500
westos is less than 1500M
3.触发器
handlers ##触发器
notify ##文件更改指定执行触发器片段
force_handlers ##force执行终止依旧执行
---
- name: aphache server
hosts: westos
vars:
PORT: 80
tasks:
- name: install apache
dnf:
name: httpd
state: latest
- name: config aphache
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: "^Listen"
line: "Listen {{PORT}}"
notify: restart apache ##修改文件后执行restart apache触发器内容
- name: start apache
service:
name: httpd
state: restarted
handlers:
- name: restart apache
service:
name: httpd
state: restarted
4.处理失败
ignore_errors ###任务失败依旧向下执行
5.change_when
change_when ##控制任务在何时报告它已被执行
6.faild_when
##条件符合时强制报错强制报错
7.block
block ##定义要运行的任务
rescue ##错误拯救内容
always ##总是会执行的
测试题: