如何使用ansible.builtin.template模块在文件中写入变量值?

如何使用ansible.builtin.template模块在文件中写入变量值?,ansible,Ansible,我想在一个文件中记录变量的内容。我是这样做的, - name: write infraID to somefile.log copy: content: "{{ infraID.stdout }}" dest: somefile.log 它成功了。但是在copy的文档中,我发现他们建议在这种情况下使用template而不是copy 对于高级格式或如果内容包含变量,请使用 ansible.builtin.template模块 我浏览了模板模块

我想在一个文件中记录变量的内容。我是这样做的,

 - name: write infraID to somefile.log
    copy:
      content: "{{ infraID.stdout }}"
      dest: somefile.log
它成功了。但是在
copy
的文档中,我发现他们建议在这种情况下使用
template
而不是
copy

对于高级格式或如果
内容
包含变量,请使用
ansible.builtin.template模块

我浏览了模板模块文档中给出的示例。但我无法找出在我的场景中有效的东西。你能告诉我如何以推荐的方式正确地做这件事吗?
提前谢谢!!干杯

模板
模块没有内容
属性。 您必须创建包含模板的文件,例如:

模板/infra-id模板

{{ infraID.stdoud }}
剧本

---
- hosts: localhost

  tasks:
    - name: Get infra ID
      shell: echo "my-infra-id"
      register: infraID

    - name: Template the file
      template:
        src: infra-id-template
        dest: infra-id-file

如果您可以发布一些“某些差异”的详细信息,这将是一件好事,因为不清楚您的期望是什么,实际输出是什么。这种差异可能是某种解析错误:您的示例既有格式错误的yaml,也有不正确的任务定义。此外,请确切说明您尝试了什么,并解释为什么它不符合您的要求。最后,使用
command
启动
jq
从json文件中读取元素,将其注册到var中以从
stdout
中取回,这是一种教科书式的错误做法。您可以读取变量中的文件内容并使用该值。根据具体情况,请参阅模块
slurp
fetch
文件
查找和来自json的
filter@seshadri_c我前面提到的差异是由于元数据文件本身的错误造成的。修复后,确保其按预期工作。但我仍然想学习如何使用
模板
而不是
复制
来编写变量。我将相应地编辑我的帖子。谢谢。从回答中,您清楚地看到“如果内容包含变量,请使用模板
”的文档是有问题的。使用
复制
模块的第一个解决方案更简单,并且与
模板
模块的功能完全相同。如果可以将简单的Jinja放入参数中,为什么会有人想要编写额外的文件?@MridulGain如果答案对您有帮助,请接受。谢谢