循环和条件任务
简单循环
简单循环用于一组迭代的任务。
在任务中添加关键字loop,对应迭代任务将要取的项目列表的值,循环变量item保存每个迭代过程中使用的值。
例:
- name: test loop
service:
name: "{{ item }}"
state: started
loop:
- service1
- service2
## vars
## service_vars:
## - service1
## - service2
## loop: "{{ service_vars }}"
循环散列
loop列表值不是简单的列表,而是字典
例:
- name: test loop2
user:
name: "{{ item.name }}"
state: present
group: "{{ item.group }}"
loop:
- name: name1
group: group1
- name: name2
group: group2
register关键字与loop
register关键字可以用于捕获循环任务的输出
在playbook.yml文件中使用register关键字,与loop同级
tasks:
- name: test loop register
shell: echo "this is {{ item }}"
loop:
- word1
- word2
register: result
- name: show result
debug:
var: result
有条件运行任务
ansible使用conditionals在符合特定条件时执行任务或play
条件任务语法
使用when语句有条件的执行任务(when的级别和loop一样)
常见的条件:比较(==、<、>、>=、<=、!=)、存在(is)、布尔值(true、false)
例:
vars:
mservice: service1
tasks:
- name: "{{ mservice }} is ..."
yum:
name: " {{ mservice }} "
when: mservice is defined
测试多个条件时可以使用 and 或 or 运算组合条件,使用 > 或 | 可以换行编写