我可以将 ansible 模板渲染到变量还是渲染到磁盘?
Can I render ansible templates to a variable vs. to disk?
写入文件是渲染ansible模板的唯一方式吗?过去,使用 python 和 jinja2,我将 jinja 模板直接渲染到 python 变量,并希望我可以用 ansible 做同样的事情。
我想做的是获取我的模板的内容并将其通过管道传输到另一个命令,而不是将模板写入磁盘上的文件并抓取该文件。可行吗?
从模板创建变量有多种选择。对于小型模板,您可以只使用带有 set_fact
:
的内联模板
- name: render a template to a variable
set_fact:
myvar: |-
This is a template.
This host is {{ inventory_hostname }}.
对于更长的模板,您可以使用 template
查找:
- name: render a template to a variable
set_fact:
myvar: "{{ lookup('template', 'template_name.j2') }}"
当然,这不仅限于 set_fact
模块。您可以在任何可以将字符串值放入 Ansible 中的地方执行此操作。
写入文件是渲染ansible模板的唯一方式吗?过去,使用 python 和 jinja2,我将 jinja 模板直接渲染到 python 变量,并希望我可以用 ansible 做同样的事情。
我想做的是获取我的模板的内容并将其通过管道传输到另一个命令,而不是将模板写入磁盘上的文件并抓取该文件。可行吗?
从模板创建变量有多种选择。对于小型模板,您可以只使用带有 set_fact
:
- name: render a template to a variable
set_fact:
myvar: |-
This is a template.
This host is {{ inventory_hostname }}.
对于更长的模板,您可以使用 template
查找:
- name: render a template to a variable
set_fact:
myvar: "{{ lookup('template', 'template_name.j2') }}"
当然,这不仅限于 set_fact
模块。您可以在任何可以将字符串值放入 Ansible 中的地方执行此操作。