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: 定义最终独立运行的任务
 
 
 以上两个缩进都可以










