Ansible Jinja template if statement

25,483

The syntax failures are caused by the presence of the {{...}} expression blocks (normally used for filling the template output with the corresponding content) inside the {%...%} statement blocks.

I only used standalone jinja2 templates, so I'm not 100% certain if this applies to Ansible jinja templates as well, but I suspect so. In the Jinja2 {%...%} statement blocks variables are referenced directly (and variable assignments are done in {% set ...%} statements), so what you're after may be along these lines:

{% set docker_compose_mq = <string-passed from Jenkins> %}
{% set docker_compose_profiles = "string" %}

{% if risk_docker_compose_mq == "string" %}
  {% set risk_docker_compose_profiles = "string1" %}
{% endif %}
Share:
25,483

Related videos on Youtube

jto
Author by

jto

Updated on September 18, 2022

Comments

  • jto
    jto over 1 year

    This is a snippet from my Ansible jinja template which populates an environment specific template.

    docker_compose_mq: <string-passed from Jenkins>
    docker_compose_profiles: "string"
    
    {% if "{{ risk_docker_compose_mq }}" == "string" %}
      {% "{{ risk_docker_compose_profiles: "string1" }}" %}
    {% endif %}
    

    This fails with a pretty generic error message:

    "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)"}
    

    I'm almost certain it's to do with escaping the quotes here but can't for the life of me work out what I'm doing wrong, any ideas?

    • Admin
      Admin almost 6 years
      No luck with this either - Convinced it must be something wrong with another aspect of my Ansible setup... @030
  • jto
    jto almost 6 years
    Didn't work out unfortunately. Maybe something deeper in my Ansible estate causing these issues.