一.循环
#循环迭代任务#
#1.简单循环#
#实例#
2.循环散列或字典列表
练习: 对下面内容进行编辑使其能够得出对应的值
二.条件
vim test1.yml
(根据rc的值判断/mnt/file是否存在)
判断vdb是否存在
多条条件组合#
两个条件同时成立时
波尔值刚好与rc相反
或条件成立
测试题:
建立playbook ~/ansibles/lvm.yml要求如下:
*建立大小为1500M名为exam_lvm的lvm 在westos组中
*如果westos不存在请输出:
vg westos is not exist
*如果westos大小不足1500M请输出:
vg westos is less then 1500M
并建立800M大小的lvm
三.触发器
实例:
练习1: 安装vsftpd服务设置匿名用户可以访问(使用变量)
练习2:安装apache服务设置80端口
- name: install web server
hosts: all
vars:
port: 80
tasks:
- name: install httpd
dnf:
name: httpd
state: present
- name: configure httpd
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: "^Listen"
line: "Listen {{port}}"
notify:
- set firewalld for port
- restart apache
- name: start httpd
service:
name: httpd
state: started
enabled: yes
- name: set firwalld
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes
handlers:
- name: set firewalld for port
firewalld:
port: "{{port}}/tcp"
state: enabled
permanent: yes
immediate: yes
- name: restart apache
service:
name: httpd
state: restarted
四.处理失败任务
#1.ignore_errors#
#作用: 当play遇到任务失败时会终止
ignore_errors: yes 将会忽略任务失败使下面的任务继续运行
实例:
#2.force_handlers#
作用: #当任务失败后play被终止也会调用触发器进程
实例:
3.changed_when
#作用: 控制任务在何时报告它已进行更改
实例:
4.failed_when
#当符合条件时强制任务失败
实例:
5.block
测试练习#
建立playbook ~/westos.yml要求如下: