Ansible检查字典是否存在

时间:2016-03-30 12:25:05

标签: dictionary ansible conditional-statements ansible-playbook

我想部署其他mysql个用户 - 如果已设置。 所以我正在使用字典。 E.g:

mysql_additional_users:
  user1:
    password: mysecretpass
    privs: "database1.*:ALL"

只要定义了dict,它就可以正常工作。 如果没有 - 它失败了。

虽然我试图确定,如果定义了dict:

  - 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 个答案:

答案 0 :(得分:5)

始终评估

with_dict。如果您想将其与when一起使用,请尝试以下操作:

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

它将评估为清空dict,但when将跳过该任务。