Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---
- - hosts: localhost
- connection: local
- gather_facts: false
- vars:
- mylist:
- - one
- - two
- - three
- myvar1: foo
- myvar2: bar
- myvar3: ''
- # myvar4:
- listofvars:
- - myvar1
- - myvar2
- - myvar3
- - myvar4
- tasks:
- # these are all equivalent
- # select('ne', '') is equivalent to reject('eq', '')
- - name: using default per var and filtering out '' with select or reject filter
- set_fact:
- newlist1: "{{ (mylist + [myvar1|default('', true)] + [myvar2|default('', true)] + [myvar3|default('', true)] + [myvar4|default('', true)])|select('ne', '')|list }}"
- # |default('', true) is equivalent to (var is defined)|ternary([var],[''])
- - name: using ternary per var (instead of default) and filtering out ''
- set_fact:
- newlist2: "{{ (mylist + (myvar1 is defined)|ternary([myvar1],[]) + (myvar2 is defined)|ternary([myvar2],[]) + (myvar3 is defined)|ternary([myvar3],[]) + (myvar4 is defined)|ternary([myvar4],[]))|select('ne', '')|list }}"
- - name: using loop against static list of vars
- set_fact:
- newlist3: "{{ newlist3|default(mylist) + [item] }}"
- when: item != ''
- loop: "{{ [myvar1, myvar2, myvar3, myvar4]|select('defined')|list }}"
- # select('defined')|select('ne', '') is equivalent to reject('undefined')|reject('eq', '')
- - name: using select or reject filters only
- set_fact:
- newlist4: "{{ newlist4|default(mylist) + [myvar1, myvar2, myvar3, myvar4]|select('defined')|select('ne', '')|list }}"
- - name: using loop against dynamic list of vars
- set_fact:
- newlist5: "{{ newlist5|default(mylist) + [lookup('vars', item, default='')]|select('ne', '')|list }}"
- loop: "{{ listofvars }}"
- - debug:
- var: newlist5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement