mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-09 05:44:23 +00:00
feat(ansible): use raw strings
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
1. [Templating](#templating)
|
1. [Templating](#templating)
|
||||||
1. [Tests](#tests)
|
1. [Tests](#tests)
|
||||||
1. [Loops](#loops)
|
1. [Loops](#loops)
|
||||||
|
1. [Use raw strings](#use-raw-strings)
|
||||||
1. [Validation](#validation)
|
1. [Validation](#validation)
|
||||||
1. [Assertions](#assertions)
|
1. [Assertions](#assertions)
|
||||||
1. [Asynchronous actions](#asynchronous-actions)
|
1. [Asynchronous actions](#asynchronous-actions)
|
||||||
@@ -601,6 +602,38 @@ Return a boolean result.
|
|||||||
- ['inner1', 'inner2']
|
- ['inner1', 'inner2']
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Use raw strings
|
||||||
|
|
||||||
|
Refer [Advanced playbook syntax].
|
||||||
|
|
||||||
|
Ansible uses the custom `!unsafe` data type to mark data as unsafe, and block Jinja2 templating in YAML.<br/>
|
||||||
|
This prevents abusing Jinja2 templates to execute arbitrary code on target machines, with the Ansible implementation
|
||||||
|
ensuring that unsafe values are never templated.
|
||||||
|
|
||||||
|
```yml
|
||||||
|
mypassword: !unsafe '234%234{435lkj{{lkjsdf'
|
||||||
|
|
||||||
|
vars:
|
||||||
|
my_unsafe_variable: !unsafe 'unsafe % value'
|
||||||
|
my_unsafe_array:
|
||||||
|
- !unsafe 'unsafe element'
|
||||||
|
- 'safe element'
|
||||||
|
my_unsafe_hash:
|
||||||
|
unsafe_key: !unsafe 'unsafe value'
|
||||||
|
```
|
||||||
|
|
||||||
|
The most common use cases include:
|
||||||
|
|
||||||
|
- Allowing passwords containing special characters like `{` or `%`.
|
||||||
|
- Allowing JSON arguments that look like templates but should not be templated.
|
||||||
|
|
||||||
|
The same result can be achieved by surrounding the Jinja2 code with the `{% raw %}` and `{% endraw %}` tags, though this
|
||||||
|
makes it less readable.
|
||||||
|
|
||||||
|
```yml
|
||||||
|
mypassword: "{% raw -%} 234%234{435lkj{{lkjsdf {%- endraw %}"
|
||||||
|
```
|
||||||
|
|
||||||
## Validation
|
## Validation
|
||||||
|
|
||||||
### Assertions
|
### Assertions
|
||||||
@@ -1761,6 +1794,7 @@ Another _better (?)_ solution in playbooks/roles would be to sanitize the input
|
|||||||
- [Ansible v2.14 CHANGELOG]
|
- [Ansible v2.14 CHANGELOG]
|
||||||
- [How can I pass variable to ansible playbook in the command line?]
|
- [How can I pass variable to ansible playbook in the command line?]
|
||||||
- [Ansible Map Examples - Filter List and Dictionaries]
|
- [Ansible Map Examples - Filter List and Dictionaries]
|
||||||
|
- [Advanced playbook syntax]
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Reference
|
Reference
|
||||||
@@ -1783,6 +1817,7 @@ Another _better (?)_ solution in playbooks/roles would be to sanitize the input
|
|||||||
|
|
||||||
<!-- Upstream -->
|
<!-- Upstream -->
|
||||||
[8 ways to speed up your Ansible playbooks]: https://www.redhat.com/sysadmin/faster-ansible-playbook-execution
|
[8 ways to speed up your Ansible playbooks]: https://www.redhat.com/sysadmin/faster-ansible-playbook-execution
|
||||||
|
[Advanced playbook syntax]: https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_advanced_syntax.html
|
||||||
[ansible galaxy user guide]: https://docs.ansible.com/ansible/latest/galaxy/user_guide.html
|
[ansible galaxy user guide]: https://docs.ansible.com/ansible/latest/galaxy/user_guide.html
|
||||||
[ansible navigator documentation]: https://ansible.readthedocs.io/projects/navigator/
|
[ansible navigator documentation]: https://ansible.readthedocs.io/projects/navigator/
|
||||||
[ansible runner]: https://ansible.readthedocs.io/projects/runner/en/stable/
|
[ansible runner]: https://ansible.readthedocs.io/projects/runner/en/stable/
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
# configure access
|
# configure access
|
||||||
set -x 'TOWER_HOST' 'https://awx.example.com/'
|
set -x 'TOWER_HOST' 'https://awx.example.com/'
|
||||||
|
|||||||
@@ -305,6 +305,8 @@
|
|||||||
'--exclude-schema=transient_views',
|
'--exclude-schema=transient_views',
|
||||||
] | flatten | unique
|
] | flatten | unique
|
||||||
}}
|
}}
|
||||||
|
raw_string: !unsafe "{{ this template is not executed, but given as-is as string }}"
|
||||||
|
raw_string_via_jinja_specification: "{% raw -%} 234%234{435lkj{{lkjsdf {%- endraw %}"
|
||||||
|
|
||||||
- name: Return data types
|
- name: Return data types
|
||||||
tags:
|
tags:
|
||||||
|
|||||||
@@ -43,6 +43,10 @@ curl -fs --user 'admin:password' 'https://awx.example.org/api/v2/job_templates/'
|
|||||||
awx job_templates modify '1' --extra_vars "@vars.yml"
|
awx job_templates modify '1' --extra_vars "@vars.yml"
|
||||||
awx job_templates modify '5' --extra_vars "@vars.json"
|
awx job_templates modify '5' --extra_vars "@vars.json"
|
||||||
|
|
||||||
|
# Show workflow job templates
|
||||||
|
awx workflow_job_templates get 'some workflow job template'
|
||||||
|
awx workflow_job_templates get -f 'yaml' 'some workflow job template returned as yaml'
|
||||||
|
|
||||||
# Show notification templates
|
# Show notification templates
|
||||||
awx notification_templates list
|
awx notification_templates list
|
||||||
curl -fs --user 'admin:password' 'https://awx.example.org/api/v2/notification_templates/' | jq '.' -
|
curl -fs --user 'admin:password' 'https://awx.example.org/api/v2/notification_templates/' | jq '.' -
|
||||||
|
|||||||
Reference in New Issue
Block a user