条件
when
条件判断:
vim mnt.yml
- name: mnt
hosts: westos
tasks:
- name: check
shell: test -e /mnt/test
register: CHECK 设置变量CHECK
ignore_errors: yes
- name: debug
debug:
msg: "/mnt/test is not exist"
when:
CHECK.rc != 0 在when里 0是存在,1是不存在
- name: debug exist
debug:
msg: "/mnt/test is exist"
when:
CHECK.rc == 0
=============================================
触发器
例:apache
vim apache.yml
- name: configure webserver
hosts: westos
tasks:
- name: install httpd
dnf:
name: httpd
state: present
- name: configure httpd.conf
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: "^Listen"
line: "Listen 8080"
notify: --------选择哪些服务名称需要用触发器
restart httpd
handlers: --------触发器:如果前面已经执行过,则触发器下面的无需执行
- name: restart httpd
service:
name: httpd
state: restarted
enabled: yes
==============================================
练习:建立大小为1500M的vdc1,判断vdc是否存在,如果不存在输入vdc is not exist,如果内存不足1.5G 输出vdc is less then 1.5G , 并建立800M挂载在westos上
- name: fdisk
hosts: westos
tasks:
- name: check
debug:
msg: /dev/vdc is not exist
when: ansible_facts['devices']['vdc'] is not defined
- name: test
block: -----判断是否执行,执行失败则前往rescue
- parted:
device: /dev/vdc
number: 1
state: present
part_end: 1500MiB
when: ansible_facts['devices']['vdc'] is defined
rescue:
- debug:
msg: /dev/vdc is less then 1500 MiB
- parted:
device: /dev/vdc
number: 1
state: present
part_end: 800MiB
always: ---------必定执行
- filesystem:
fstype: xfs
dev: /dev/vdc1
force: yes
- mount:
path: /westos
src: /dev/vdc1
fstype: xfs
state: mounted
===========================================
处理任务失败
igonre_errors ----------忽视任务失败
force_handlers ---------当任务失败后play被终止也会调用触发器
changed_when -------------控制任务在何时报告它已进行更改
failed_when -------------当符合条件时强制任务失败