Ansible:任务中或模板中的条件?

Ansible:任务中或模板中的条件?

似乎有两种方法可以使文件内容依赖于变量。

copy:
  path: /foo
  content: |
    {{ if myFoo }}
      ; lots of stuff
    {{ else }}
      ; lots of other stuff
    {{ end }}

或者我可以做

copy:
  path: /foo
  content: |
      ; lots of stuff
when: myFoo

copy:
  path: /foo
  content: |
      ; lots of other stuff
when: not myFoo

这里的正常构造是什么?想要什么?

答案1

我不得不重写任务。

- copy:
        dest: /tmp/ansiblefile.txt
        content: |
          {% if myFoo %}
            ; lots of stuff
          {% else %}
            ; lots of other stuff
          {% endif %}
- copy:
    dest: /foo
    content: |
      ; lots of stuff
  when: myFoo

- copy:
    dest: /foo
    content: |
      ; lots of stuff
  when: not myFoo

在我看来,两者都可以。然而,我会使用后一种方法,因为我发现不处理 jinja 模板更容易; jinja 模板的文档不是很详细且易于理解。

相关内容