我可以将 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 中的地方执行此操作。