aboutsummaryrefslogtreecommitdiffstats
path: root/roles/prepare/tasks/except.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/prepare/tasks/except.yml')
-rw-r--r--roles/prepare/tasks/except.yml55
1 files changed, 55 insertions, 0 deletions
diff --git a/roles/prepare/tasks/except.yml b/roles/prepare/tasks/except.yml
new file mode 100644
index 0000000..8d8abff
--- /dev/null
+++ b/roles/prepare/tasks/except.yml
@@ -0,0 +1,55 @@
+---
+# in this file, default variable value is '-666-', I hope no one will ever
+# test the number of the beast :)
+
+
+- name: Testing 'EXCEPT' condition
+ debug:
+ var: condition
+
+- name: if condition is only one word
+ block:
+ - name: check variable is present
+ include_tasks: exit.yml
+ when: lookup('env', condition)| default(False, true)
+ when: condition.split()| length == 1
+
+- name: if condition contains '=='
+ block:
+ - name: split condition with '=='
+ set_fact:
+ cond: "{{ (condition|replace(' == ', '==')).split('==') }}"
+ - debug: msg="{{ cond[1:]| join('==') }}"
+ - name: test condition
+ include_tasks: exit.yml
+ when: (lookup('env', cond[0])| default('-666-', true)) == (
+ cond[1:]| join('=='))
+ when: condition is search('==')
+
+- name: if condition contains '!='
+ block:
+ - name: split condition with '!='
+ set_fact:
+ cond: "{{ (condition|replace(' != ', '!=')).split('!=') }}"
+ - name: test condition
+ include_tasks: exit.yml
+ when: (lookup('env', cond[0])| default('-666-', true)) != (
+ cond[1:]| join('!='))
+ when: condition is search('!=')
+
+- name: if condition contains 'in'
+ block:
+ - name: split condition with ' in '
+ set_fact:
+ cond: "{{ condition.split(' in ') }}"
+ - name: split list
+ set_fact:
+ inlist: |
+ {{ (cond[1]|
+ replace(', ', ',')| replace(' ,', ',')|
+ replace(' ]', '') | replace(']', '')|
+ replace('[ ', '') | replace('[', '')).split(',') }}
+ - name: test condition
+ include_tasks: exit.yml
+ when: (lookup('env', cond[0])| default('-666-', true)) in inlist
+ when: condition is search(' in ')