如何检查是否在没有警告的情况下定义了多个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,我可以使用项中的字符串访问它。谢谢