避免在 when 语句中使用 Jinja 模板分隔符

避免在 when 语句中使用 Jinja 模板分隔符

我目前正在将我的 Ansible 剧本从 2.1 版移植到 2.7 版。如果我在 when 子句中使用 jinja 模板分隔符(例如 {{ .. }}),Ansible 现在会打印警告。

[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}

我在简单的条件语句上更改它没有任何问题,但我想知道如何解决这个问题:

- shell: pg_lsclusters -h | awk '{print $2 " " $6}'
  register: postgresql_lsclusters
  changed_when: false
  check_mode: no

- fail: 
    msg="test"
  when: postgresql_lsclusters.stdout.find("{{ postgresql_cluster }} {{ postgresql_data_dir }}/{{ postgresql_version }}/{{ postgresql_cluster }}") == -1

我尝试用以下内容替换 when 语句,但没有成功:

when: postgresql_lsclusters.stdout.find(postgresql_cluster ~ ' ' ~ postgresql_data_dir ~ '/' ~ postgresql_version ~ '/' ~ postgresql_cluster") == -1`

答案1

像这样吗?

- name: PG cluster find
  vars:
    big_pg_var: "{{ postgresql_cluster }} {{ postgresql_data_dir }}/{{ postgresql_version }}/{{ postgresql_cluster }}"
  fail:
    msg="test"
  when: postgresql_lsclusters.stdout.find(big_pg_var) == -1

相关内容