一千萬個為什麽

搜索

Ansible Jinja模板if語句



這是我的Ansible jinja模板的一個片段,它填充了特定於環境的模板。

docker_compose_mq: 
docker_compose_profiles: "string"

{% if "{{ risk_docker_compose_mq }}" == "string" %}
  {% "{{ risk_docker_compose_profiles: "string1" }}" %}
{% endif %}

這失敗了一個非常通用的錯誤消息:

"Syntax Error while loading YAML.\n\n\nThe error appears to have been in 'True': line 26, column 2, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\n(could not open file to display line)"}

我幾乎可以肯定這是為了逃避這裏的引用但不能為我的生活弄清楚我做錯了什麽,有什麽想法嗎?

轉載註明原文: Ansible Jinja模板if語句

一共有 1 個回答:

語法失敗是由 {{...}} 的存在引起的表達式阻止(通常用於填充帶有相應內容的模板輸出) {%...%} 語句塊。

我只使用了獨立的jinja2模板,所以如果這也適用於Ansible jinja模板我不是100%肯定,但我懷疑如此。在Jinja2 {%...%} 語句中,塊變量是直接引用的(變量賦值是在 {%set ...%} 語句中完成的),那麽你可能會遵循這些方針:

{% set docker_compose_mq =  %}
{% set docker_compose_profiles = "string" %}

{% if risk_docker_compose_mq == "string" %}
  {% set risk_docker_compose_profiles = "string1" %}
{% endif %}