首页 > 解决方案 > 变量类型列表中的条件

问题描述

我想在“列表”类型变量中添加某些行。我这样做

condition: 'true'

var_list:
  - template: "{{ playbook_dir }}/file1.j2", dest_dir: "{{ docker_volume_basedir }}/file1.txt"
  - template: "{{ playbook_dir }}/file2.j2", dest_dir: "{{ docker_volume_basedir }}/file2.txt"
  {% if condition == 'true' %}
  - template: "{{ playbook_dir }}/file3.j2", dest_dir: "{{ docker_volume_basedir }}/file3.txt"
  {% endif %}

但我有一个很好的风格错误......

"message": "Syntax Error while loading YAML.\n  found character '%' that cannot start any token

你有想法吗?

标签: ansibleyaml

解决方案


问题是您在 vars 文件中使用模板化语法并且失败了。

例如,我能想到的一种方法是在运行时这样做

- hosts: all
  vars:
    default_list:
      - template: "foo"
      - template: "bar"
    baz_list:
      - template: "baz"
    condition: false
  tasks:
    - name: append baz
      set_fact:
        default_list: "{{ default_list + baz_list }}"
      when: condition

推荐阅读