我将所有的ansible变量存储到yaml文件中(过滤掉那些以' ansible _'开头的文件):
- hosts: localhost
tasks:
- set_fact:
all_vars: "{{all_vars | default({}) |combine({item.key: item.value})}}"
when: "{{not item.key.startswith('ansible_')}}"
with_dict: "{{vars}}"
- copy:
content: "{{ all_vars }}"
dest: "/tmp/tmp.yml"
这是group_vars/all/defaults.yml
SOME_FACT1: "some-fact"
SOME_FACT2: "{{ SOME_FACT1 }}"
SOME_FACT3: "{{ SOME_FACT2 }}"
这与ansible 2.2完美配合。但是对于ansible 2.3(2.3.1.0),变量不会被渲染。 我得到这样的结果:
... "SOME_FACT1": "some-fact", "SOME_FACT3": "{{ SOME_FACT2 }}", "SOME_FACT2": "{{ SOME_FACT1 }}" ...
如何强制ansible 2.3渲染变量?
答案 0 :(得分:1)
问题似乎是,ansible不会渲染变量和(我不知道为什么)all_vars。但是直接使用时,vars / all_vars中的任何变量都会正确呈现。
这样可行:
is_user_logged_in()
这个想法是:
创建一个文件,列出格式为
的所有变量SOME_VAR:{{SOME_VAR | to_json}} ...
不太好,但确实有效。