Ansible如何检查字典是否存在

3
我希望您能协助部署额外的mysql用户(如果已设置)。因此,我使用一个字典。例如:
mysql_additional_users:
  user1:
    password: mysecretpass
    privs: "database1.*:ALL"

只要字典被定义了,就可以正常工作。如果没有定义,它就会失败。
尽管我试图确定字典是否被定义:
  - name: create additional mysql users
    mysql_user: name={{ item.key }} password={{ item.value.password }} priv={{ item.value.privs }} state=present      
    with_dict: "{{ mysql_additional_users }}"
    when: mysql_additional_users is defined 

但我总是收到一个错误:

fatal: [<hostname>]: FAILED! => {"failed": true, "msg": "ERROR! 'mysql_additional_users' is undefined"}

有什么想法吗?
1个回答

8

with_dict 总是会被评估。如果你想在 when 中使用它,请尝试以下方法:

with_dict: mysql_additional_users | default({})
when: mysql_additional_users is defined

这将被计算为空字典,但任务将通过when被跳过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接