Ansible流程控制
不管是shell还是各大编程语言中,流程控制、条件判断、循环这些都是必不可少的,在我们使用Ansible的过程中,条件判断的使用频率同样极其的高,是我们必须掌握的技能。
一、when判断
1 | - hosts: webs |
1 | when判断语法: |
案例. 根据nginx的返回结果来判断是否重启nginx
1 |
|
二、字典循环
1 | ### 注意:item是固定的变量名称,不能自定义 |
1 | [root@web01 ~]#ll |
三、handlers事件触发模块
同样以安装nginx为例,根据配置文件是否修改来触发是否重启nginx
handlers模块使用注意事项
- 无论多少个task通知了相同的handlers,handlers仅会在所有tasks结束后运行一次;
- handlers只有在其所在的任务被执行时,才会被运行;
- handlers只会在每一个play的末尾运行一次,想在一个playbook中间运行handlers,则需要使用meta模块来实现,如:
-meta: flush_handlers
; - 不能使用handlers替代tasks,handlers和tasks是同级的,在handlers下写的任务只用被调用才能运行
四、playbook文件复用
一个yaml文件执行(引用)多个palybook
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 [root@ansible ~]# cat site.yml
- hosts: webs
tasks:
- include_tasks: install_nginx.yml
when: ansible_hostname == "web01"
- include_tasks: install_nfs.yml
when: ansible_hostname == "web02"
[root@ansible ~]# cat install_nginx.yml
- name: Install Nginx Server
yum:
name: nginx
state: present
[root@ansible ~]# cat install_nfs.yml
- name: Install nfs Server
yum:
name: nfs-utils
state: present
Playbook任务标签