1- hosts: localhost
2  vars:
3    vaulted_value: !vault |
4          $ANSIBLE_VAULT;1.1;AES256
5          35323961353038346165643738646465376139363061353835303739663538343266303232326635
6          3365353662646236356665323135633630656238316530640a663362363763633436373439663031
7          33663433383037396438656464636433653837376361313638366362333037323961316364363363
8          3835616438623261650a636164376534376661393134326662326362323131373964313961623365
9          3833
10  tasks:
11    - debug:
12        msg: "{{ vaulted_value }}"
13
14    - debug:
15        msg: "{{ vaulted_value|type_debug }}"
16
17    - assert:
18        that:
19          - vaulted_value is vault_encrypted
20          - vaulted_value == 'foo bar'
21          - vaulted_value|string == 'foo bar'
22          - vaulted_value|quote == "'foo bar'"
23          - vaulted_value|capitalize == 'Foo bar'
24          - vaulted_value|center(width=9) == ' foo bar '
25          - vaulted_value|default('monkey') == 'foo bar'
26          - vaulted_value|escape == 'foo bar'
27          - vaulted_value|forceescape == 'foo bar'
28          - vaulted_value|first == 'f'
29          - "'%s'|format(vaulted_value) == 'foo bar'"
30          - vaulted_value|indent(indentfirst=True) == '    foo bar'
31          - vaulted_value.split() == ['foo', 'bar']
32          - vaulted_value|join('-') == 'f-o-o- -b-a-r'
33          - vaulted_value|last == 'r'
34          - vaulted_value|length == 7
35          - vaulted_value|list == ['f', 'o', 'o', ' ', 'b', 'a', 'r']
36          - vaulted_value|lower == 'foo bar'
37          - vaulted_value|replace('foo', 'baz') == 'baz bar'
38          - vaulted_value|reverse|string == 'rab oof'
39          - vaulted_value|safe == 'foo bar'
40          - vaulted_value|slice(2)|list == [['f', 'o', 'o', ' '], ['b', 'a', 'r']]
41          - vaulted_value|sort|list == [" ", "a", "b", "f", "o", "o", "r"]
42          - vaulted_value|trim == 'foo bar'
43          - vaulted_value|upper == 'FOO BAR'
44          # jinja2.filters.do_urlencode uses an isinstance against string_types
45          # - vaulted_value|urlencode == 'foo%20bar'
46          - vaulted_value|urlize == 'foo bar'
47          - vaulted_value is not callable
48          - vaulted_value is iterable
49          - vaulted_value is lower
50          - vaulted_value is not none
51          # This is not exactly a string, and UserString doesn't fulfill this
52          # - vaulted_value is string
53          - vaulted_value is not upper
54
55          - vaulted_value|b64encode == 'Zm9vIGJhcg=='
56          - vaulted_value|to_uuid == '0271fe51-bb26-560f-b118-5d6513850860'
57          - vaulted_value|string|to_json == '"foo bar"'
58          - vaulted_value|md5 == '327b6f07435811239bc47e1544353273'
59          - vaulted_value|sha1 == '3773dea65156909838fa6c22825cafe090ff8030'
60          - vaulted_value|hash == '3773dea65156909838fa6c22825cafe090ff8030'
61          - vaulted_value|regex_replace('foo', 'baz') == 'baz bar'
62          - vaulted_value|regex_escape == 'foo\ bar'
63          - vaulted_value|regex_search('foo') == 'foo'
64          - vaulted_value|regex_findall('foo') == ['foo']
65          - vaulted_value|comment == '#\n# foo bar\n#'
66
67    - assert:
68        that:
69          - vaulted_value|random(seed='foo') == ' '
70          - vaulted_value|shuffle(seed='foo') == ["o", "f", "r", "b", "o", "a", " "]
71          - vaulted_value|pprint == "'foo bar'"
72      when: ansible_python.version.major == 3
73
74    - assert:
75        that:
76          - vaulted_value|random(seed='foo') == 'r'
77          - vaulted_value|shuffle(seed='foo') == ["b", "o", "a", " ", "o", "f", "r"]
78          - vaulted_value|pprint == "u'foo bar'"
79      when: ansible_python.version.major == 2
80
81    - assert:
82        that:
83          - vaulted_value|map('upper')|list == ['F', 'O', 'O', ' ', 'B', 'A', 'R']
84      when: lookup('pipe', ansible_python.executable ~ ' -c "import jinja2; print(jinja2.__version__)"') is version('2.7', '>=')
85
86
87    - assert:
88        that:
89          - vaulted_value.split()|first|int(base=36) == 20328
90          - vaulted_value|select('equalto', 'o')|list == ['o', 'o']
91          - vaulted_value|title == 'Foo Bar'
92          - vaulted_value is equalto('foo bar')
93      when: lookup('pipe', ansible_python.executable ~ ' -c "import jinja2; print(jinja2.__version__)"') is version('2.8', '>=')
94
95    - assert:
96        that:
97          - vaulted_value|string|tojson == '"foo bar"'
98          - vaulted_value|truncate(4) == 'foo bar'
99      when: lookup('pipe', ansible_python.executable ~ ' -c "import jinja2; print(jinja2.__version__)"') is version('2.9', '>=')
100
101    - assert:
102        that:
103          - vaulted_value|wordwrap(4) == 'foo\nbar'
104      when: lookup('pipe', ansible_python.executable ~ ' -c "import jinja2; print(jinja2.__version__)"') is version('2.11', '>=')
105
106    - assert:
107        that:
108          - vaulted_value|wordcount == 2
109      when: lookup('pipe', ansible_python.executable ~ ' -c "import jinja2; print(jinja2.__version__)"') is version('2.11.2', '>=')
110
111    - ping:
112        data: !vault |
113          $ANSIBLE_VAULT;1.1;AES256
114          35323961353038346165643738646465376139363061353835303739663538343266303232326635
115          3365353662646236356665323135633630656238316530640a663362363763633436373439663031
116          33663433383037396438656464636433653837376361313638366362333037323961316364363363
117          3835616438623261650a636164376534376661393134326662326362323131373964313961623365
118          3833
119      register: ping_result
120
121    - assert:
122        that:
123          - ping_result.ping == 'foo bar'
124