ansible实施任务控制

循环和条件任务

简单循环

简单循环用于一组迭代的任务。

在任务中添加关键字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 运算组合条件,使用 > 或 | 可以换行编写

循环和条件可以组合使用运行任务

你可能感兴趣的:(ansible,ansible,运维,loop,when,register)