【问题标题】:Can I render ansible templates to a variable vs. to disk?我可以将 ansible 模板渲染到变量与磁盘吗?
【发布时间】:2020-07-29 18:49:24
【问题描述】:

编写文件是呈现 ansible 模板的唯一方法吗?过去,使用 python 和 jinja2,我直接将 jinja 模板渲染为 python vars,并希望我可以使用 ansible 做同样的事情。

我想要做的是获取模板的内容并将其通过管道传输到另一个命令,而无需将模板写入磁盘上的文件并对文件进行分类。可行吗?

【问题讨论】:

    标签: ansible ansible-template


    【解决方案1】:

    从模板创建变量有多种选择。对于小型模板,您可以使用带有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 中放置字符串值的地方执行此操作。

    【讨论】:

    • 很好,这很棒。如果您使用模板模块并指定目标,是否可以判断模板是否以相同的方式更新?例如,如果模板已更新,我只想完成任务。没什么大不了的,只是想知道,我在文档中找不到这个。
    • 检测更新有效,因为渲染模板的结果与目标文件不匹配。当您渲染到一个变量时,没有以前的内容,所以从这个角度来看总是有变化。
    猜你喜欢
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    相关资源
    最近更新 更多