ansible实施任务控制
循环和条件任务
简单循环
简单循环用于一组迭代的任务。
在任务中添加关键字loop,对应迭代任务将要取的项目列表的值,循环变量item保存每个迭代过程中使用的值。
例:
- name: test loopservice: name: "{{ item }}"state: startedloop:- service1- service2
## vars
## service_vars:
## - service1
## - service2
## loop: "{{ service_vars }}"
循环散列
loop列表值不是简单的列表,而是字典
例:
- name: test loop2user: name: "{{ item.name }}"state: presentgroup: "{{ item.group }}"loop:- name: name1group: group1- name: name2group: group2
register关键字与loop
register关键字可以用于捕获循环任务的输出
在playbook.yml文件中使用register关键字,与loop同级
tasks:- name: test loop registershell: echo "this is {{ item }}"loop:- word1- word2register: result- name: show resultdebug: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 运算组合条件,使用 > 或 | 可以换行编写