如果某些条件失败,我想中止剩余任务的执行。并显示正确的错误消息。
因此,我不想跳过剩余的任务,而是希望显示错误消息并停止ansible playbook的执行。
假设我在下面的命令下运行
$ ansible-playbook playbook.yml -e "param1=value1 param2=value"
我的剧本是这样的:
playbook.yml:-
---
- hosts: local
user: roop
gather_facts: no
vars: {param1: "", param2: ""}
tasks:
#check whether param1 defined
- name: 'Check for valid param1'
shell: echo {{ param1 }}
register: isValidParam1
when: param1 !=""
#check if param1 is null or invalid
- name: 'check if param1 is null or invalid'
debug: msg="Please enter correct param1"
when: param1 == ""
#check whether param2 defined
- name: 'Check for valid param2'
shell: echo {{ param2 }}
register: isValidParam2
when: param2 != ""
#check if param2 is null or invalid
- name: 'check if param2 is null or invalid'
debug: msg="Please enter correct param2"
when: param2 == ""
#check params is valid and defined
- name: 'Check for valid params'
shell: echo "param1={{ param1 }} param2={{ param2 }}
register: validParams
when: isValidParam1 is defined and isValidParam2 is defined
#check if params are invalid then abort below all tasks.
- name: 'check if validParams is null or invalid'
debug: msg="Please enter correct Params"
when: validParams is not defined
# based on validParams, and different value of param1 more than
10 task executing.
正如我在上一个任务评论中提到的。我正在执行10多个基于validParams
和param1
不同值的任务。如果validParams
未定义,则中止所有执行并显示错误消息。
有没有什么有效的方法来做到这一点。请推荐我。
发布于 2014-03-31 19:50:16
您可以使用
它会伴随着类似这样的东西。
#check if params are invalid then abort below all tasks.
- name: 'check parm is null or invalid'
fail: msg="Please enter correct Params"
when: "param1 is not defined or param2 is not defined " ## whatever condition you want
发布于 2017-11-06 23:50:53
因此,在Ansible 2.2+中有一个元模块:http://docs.ansible.com/ansible/latest/meta_module.html
所以
元数据: end_play
以非失败状态停止剧本
发布于 2017-10-03 21:13:51
Ansible >= 2.0有一个block feature,它允许你对任务进行逻辑分组。这使您可以将时间应用于一组任务。
这与fail或assert模块之间的主要区别在于,任务不会被标记为失败;它只是被跳过。这是否更好取决于您的用例。例如,我有一些写入日志的任务,该日志稍后会被解析为失败;如果只记录“真实”的失败情况,则更容易做到这一点。
示例代码:
- block:
# task 1
# task 2
# task 3
when: "param1 is defined or param2 is defined"
# otherwise output a message
- block:
debug: msg="Missing params"
when: "param1 is not defined or param2 is not defined"
https://stackoverflow.com/questions/22758925
复制相似问题