0
点赞
收藏
分享

微信扫一扫

ansible中的循环、条件判断、任务失败处理

草原小黄河 2022-04-17 阅读 137
运维

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: 定义最终独立运行的任务
在这里插入图片描述
在这里插入图片描述
以上两个缩进都可以

举报

相关推荐

0 条评论