更新/修改列表中的嵌套dict值

时间:2018-08-14 19:17:54

标签: ansible-2.x

我有一个变量,它是带有嵌套字典的字典列表,如下所示:

my_users:
  - { name: "James Doe", user_id: "xman01", user_password: { clear_text: "password1", hash_md5: "", hash_sha512: "" } }
  - { name: "John Dean", user_id: "xman02", user_password: { clear_text: "password2", hash_md5: "", hash_sha512: "" } }
  - { name: "Jane Burn", user_id: "xman03", user_password: { clear_text: "password3", hash_md5: "", hash_sha512: "" } }
  ...

在执行剧本期间,我想遍历每个项目,为clear_text值生成md5和sha512散列,并将它们存储回数据结构本身中,换句话说,就像:

- name: update users data with password hashes
  set_fact:
    item.user_password.hash_md5 = "{{ item.user_password.clear_text | password_hash('md5') }}"
    item.user_password.hash_sha512 = "{{ item.user_password.clear_text | password_hash('sha512') }}"
  with_items: "{{ my_users }}"

我知道这在Ansible中是行不通的,因为语法错误,而且我尝试改编了很多类似的示例,但是没有运气。 有什么建议吗?

由于CentOS-5 / RHEL-5的兼容性限制,我处于ansible 2.3.x。

0 个答案:

没有答案