1、迭代循环
vim westos.yml
---
- name: create user
hosts: 172.25.254.100
tasks:
- name: create user
user:
name: "{{item}}"
state: present
loop:
- user1
- user2
- user3
ansible-playbook westos.yml
loop: 赋值表
{{item}} 迭代变量名称
2、循环散列或字典列表
vim westos.yml
---
- name:create user
hosts:172.25.254.100
tasks:
- name: create user
user:
name: "{{item.name}}" 或者是name: "{{item['name']}}"
uid: "{{item.uid}}"
state: present
loop:
- name:user1
uid:2000
- name:user2
uid:3000
- name:user3
uid:4000
ansibel-playbook westsos.yml
3、条件
when:
- 条件1
- 条件2
vim westos.yml
---
- name:test
hosts: 172.25.254.100
tasks:
- name: ping
shell:
ping -c1 -w1 172.25.254.100
ignore_errors: yes #即使报错了,也会向下执行
register: WESTOS
- debug:
msg: host is up
when: WESTOS.rc == 0
- debug:
msg: host is down
when: WESTOS.rc != 0
ansible-playbook westos.yml
vim westos.yml
---
- name: test
hosts: 172.25.254.100
tasks:
- debug:
msg: vdb is exist
when: ansible_facts['devices']['vdb'] is defined
- debug:
msg: vdb is not exist
when: ansible_facts['devices']['vdb'] is not defined
只有当清单用户为指定的ip时,才能运行
vim
---
- name: test
hosts: westos
tasks:
- debug:
msg: vdb is exist
when:
- ansible_facts['devices']['vdb'] is defined
- inventory_hostname is in "172.25.254.100"
- debug:
msg: vdb is not exist
when:
- ansible_facts['devices']['vdb'] is not defined
- inventory_hostname is in "172.25.254.100"
4、处理失败任务时
当play遇到任务失败时会终止
ignore_errors: yes 将会忽略任务失败使下面的任务继续运行
changed_when 控制任务在何时报告它已进行更改 tRUe
failed_when: “‘westos’ in TEST.stdout” 当输出中包有这样的字符,则强制失败
block: 定义要运行的任务
rescue: 定义当block句子中出现失败任务后运行的任务
always: 定义最终独立运行的任务
以上两个缩进都可以