将Ansible模板渲染到事实变量中

34
有没有一种方法可以将Ansible模板渲染到事实中?我尝试寻找解决方案,但似乎临时文件是唯一的方法。
1个回答

60
我觉得你可能只是在寻找模板查找插件
- set_fact:
    rendered_template: "{{ lookup('template', './template.j2') }}"

使用示例:
  • template.j2

      你好 {{ value_for_template }}
    
  • playbook.yml

      ---
      - hosts: localhost
        gather_facts: no
        connection: local
        vars:
          value_for_template: 世界
        tasks:
          - debug:
              var: rendered_template
            vars:
              rendered_template: "{{ lookup('template', './template.j2') }}"
    
  • 结果:

      TASK [debug] *******************************************************************
      ok: [localhost] => {
          "rendered_template": "你好世界\n"
      }
    

2
最新文档链接:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_lookup.html - user2988142
这个解决方案并不适用于每种情况,因为set_facts不会改变变量的值。因此,如果另一个任务依赖于更改,它将不会运行。 - alixander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接