Ansible set_fact创建字典,数组按变量分组

时间:2018-06-21 10:56:56

标签: ansible ansible-2.x ansible-facts

我正在尝试创建一个Ansible脚本,该脚本将首先创建所有唯一的脚本 blob_store,然后创建一个组并将存储库添加到该组。要存储的列表具有以下结构。

repo_list: - {name: "repo1", url: "http://repo1.com", blob_store: "blob1", group: "group1"} - {name: "repo2", url: "http://repo2.com", blob_store: "blob1", group: "group1"} - {name: "repo3", url: "http://repo2.com", blob_store: "blob2", group: "group2"}

我可以使用以下命令获取唯一Blob的列表。

- name: Populate Blob List set_fact: blob_list: "{{ blob_list|default([])| union([ item.blob_store ]) }}" with_items: "{{ repo_list }}"

这给出了一个输出blob_list: ["blob1","blob2"]。然后我正在创建blob。

对于下一部分,我需要以以下格式提供每个组的存储库列表:

repo_groups: { group1:["repo1","repo2"], group2:["repo3"] }

我无法合并回购清单。当我运行以下代码时,哈希不会在数组中添加项目,而是在替换项目。

- name: Populate Groups set_fact: repo_groups: "{{ repo_groups|default({}) | combine({item.group:[ item.name ]}) }}" with_items: "{{ proxy_repos }}"

预期输出:

repo_groups: { group1:["repo1","repo2"], group2:["repo3"] }

实际输出

repo_groups: { group1:["repo2"], group2:["repo3"] }

有人可以帮助我将这些值组合在一起吗?

0 个答案:

没有答案