Question:
I want to abort execution of remaining task if certain condition is failed.
and display proper error message.
So instead of skipping remaining task I want to show error message and stop execution of ansible playbook.
Lets say I am running below command
1 2 |
$ ansible-playbook playbook.yml -e "param1=value1 param2=value" |
My playbook look like this:-
playbook.yml:-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
--- - 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. |
As I have mentioned in my last task comment. I am executing more than 10 task based on validParams
and param1
different value. What I need here
if validParams
is undefined then abort all execution and show error messages.
Is there any efficient way to do this . Please suggest me.
Answer:
You can use
- assert
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/assert_module.html - or fail
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/fail_module.html
It will go along with something like this
1 2 3 4 5 |
#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 |