Skip to content

Instantly share code, notes, and snippets.

@halberom
Created June 26, 2017 13:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save halberom/6f3712931f5ad1b001a739fb3ba48c20 to your computer and use it in GitHub Desktop.
Save halberom/6f3712931f5ad1b001a739fb3ba48c20 to your computer and use it in GitHub Desktop.
ansible - example of generating complex fact using jinja, and passing to role
---
- hosts: localhost
connection: local
gather_facts: no
vars:
foo: bar
cops_es_nginx_foo: bar
tasks:
- set_fact:
es_vhost: |
{% set nginx = {'v': {}} %}
{% set o = 'cops_es_nginx_' %}
{% set p = 'corpusops_nginx_' %}
{% for i, val in vars.items() %}
{% if i.startswith(o) %}
{% set _ = nginx.v.update({p+o.join(i.split(o)[1:]): val}) %}
{% endif %}
{% endfor %}
{{ nginx.v | to_json }}
- debug:
var: es_vhost
- include_role:
name: test
vars:
role_vhost: '{{ es_vhost }}'
# roles/test/tasks/main.yml
---
- debug:
var: role_vhost
PLAY [localhost] ***************************************************************************************************************************************************************************************************************************************************************
TASK [set_fact] ****************************************************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [debug] *******************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"es_vhost": {
"corpusops_nginx_foo": "bar"
}
}
TASK [test : debug] ************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"role_vhost": {
"corpusops_nginx_foo": "bar"
}
}
PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment