Ansible-----条件判断与错误处理

Posted jinyuanliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible-----条件判断与错误处理相关的知识,希望对你有一定的参考价值。

 

 

 

 

 

 

 

 

fail模块

想要playbook按照我们的意愿中断任务,可以借助fail模块。

在任务没有设置ignore_errors:true情况下,如果有任务执行失败,playbook会自动停止执行,当fail模块执行后,playbook会认为任务执行失败了,会主动中止任务。

---
- hosts: all
  remote_user: root
  tasks:
  - debug:
      msg: "1"
  - debug:
      msg: "2"
  - fail:
  - debug:
      msg: "3"
  - debug:
      msg: "4"
 

技术图片

我们也可以通过fail模块自带的msg,自定义报错信息,

---
- hosts: test70
  remote_user: root
  tasks:
  - debug:
      msg: "1"
  - fail:
      msg: "Interrupt running playbook"
  - debug:
      msg: "2"

技术图片

fail+when

 fail模块通常与when模块结合,如果中断剧本的条件成立,则执行fail模块,中断剧本。

---
- hosts: all
  remote_user: root
  tasks:
  - shell: "echo ‘This is a string for testing--error‘"
    register: return_value
  - fail:
      msg: "Conditions established,Interrupt running playbook"
    when: "‘error‘ in return_value.stdout"
  - debug:
      msg: "I never execute,Because the playbook has stopped"

技术图片

failed_when也可以完成类似的功能,当条件成立时将对应任务的状态设置为失败,中止剧本。

---
- hosts: all
  remote_user: root
  tasks:
  - debug:
      msg: "I execute normally"
  - shell: "echo ‘This is a string for testing error‘"
    register: return_value
    failed_when: ‘ "error" in return_value.stdout‘
  - debug:
      msg: "I never execute,Because the playbook has stopped"

技术图片

changed_when

failed_when关键词的作用是在条件成立时将任务状态改为失败。

changed_when关键词的作用是在条件成立时,将任务状态改为changed。

---
- hosts: all
  remote_user: root
  tasks:
  - debug:
      msg: "test message"
    changed_when: 2 > 1

技术图片

 当changed_when状态被设置为false时,不管原任务状态为啥,最终都会被设置为ok状态

---
- hosts: all
  remote_user: root
  tasks:
  - shell: "ls /opt"
    changed_when: True

技术图片

 

以上是关于Ansible-----条件判断与错误处理的主要内容,如果未能解决你的问题,请参考以下文章

ansible自动化运维详解ansible中的任务执行控制及实例演示:循环条件判断触发器处理失败任务

ansible自动化运维详解ansible中的任务执行控制及实例演示:循环条件判断触发器处理失败任务

ansible自动化运维详解ansible中的任务执行控制及实例演示:循环条件判断触发器处理失败任务

Ansible 学习总结—— Ansible 循环条件判断触发器处理失败等任务控制使用总结

ansible之条件判断

ansible条件判断when