如何检查是否在没有警告的情况下定义了多个ansible变量?

如何检查是否在没有警告的情况下定义了多个ansible变量?,ansible,jinja2,Ansible,Jinja2,我在角色开始时有一项任务: - name: check if pg_* variables are defined fail: msg="variable {{item}} is undefined" when: "{{item}} is undefined" with_items: - pg_dbname - pg_host - pg_port - pg_username - pg_password 但Ansible的新版本提出了以下警告:

我在角色开始时有一项任务:

- name: check if pg_* variables are defined
  fail: msg="variable {{item}} is undefined"
  when: "{{item}} is undefined"
  with_items:
    - pg_dbname
    - pg_host
    - pg_port
    - pg_username
    - pg_password
但Ansible的新版本提出了以下警告:

[警告]:when语句不应包含jinja2模板分隔符,如{{}或{%}。发现:{item}}未定义

当:项未定义时,移除Jinja2大括号
不起作用,因为最终评估基本上等同于:

"pg_dbname" is undefined` # False
"pg_host" is undefined` # False
.
.
"pg_password" is undefined` # False

这不是我想要的。

名为
item
的变量是始终
中定义的,带有\u items
循环,您的任务应该具有分配给它的所有五个字符串的
跳过状态


您要检查实际变量是否存在:

when: vars[item] is undefined

我知道必须有一个全局dict,我可以使用
项中的字符串访问它。谢谢