如何在Ansible中获取深度的dict值

2024-05-16 07:38:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的字典:

vars:
        yum_repos:
          OCM:
            ocm-yum:
              name: OCM
              baseurl: http://ocm.example.com/xxxx
          ANSIBLE:
            ansible-yum:
              name: Ansible
              baseurl: http://occ-ansible.example.com/yyyy
          ACS:
            acs-yum:
              name: ACS
              baseurl: http://acs.uk.example.com/zzzz

这是我创建yum存储库的剧本,我想将其简化为一项任务:

- name: Add repository
  become: yes
  yum_repository:
    name: "{{ item.key }}"
    description: "{{ item.value.name }}"
    baseurl: "{{ item.value.baseurl }}"
    file: OCM
  loop: "{{ q('dict', yum_server.yum_repos.OCM) }}"

  yum_repository:
    name: "{{ item.key }}"
    description: "{{ item.value.name }}"
    baseurl: "{{ item.value.baseurl }}"
    file: ANSIBLE
  loop: "{{ q('dict', yum_server.yum_repos.ANSIBLE) }}"

  yum_repository:
    name: "{{ item.key }}"
    description: "{{ item.value.name }}"
    baseurl: "{{ item.value.baseurl }}"
    file: ACS
  loop: "{{ q('dict', yum_server.yum_repos.ACS) }}"

我希望有这样的东西:

- name: Add repository
  become: yes
  yum_repository:
    name: "{{ item.key }}"
    description: "{{ item.value.name }}"
    baseurl: "{{ item.value.baseurl }}"
    file: {{ OCM/ANSIBLE/ACS/any_name }}
  loop: "{{ q('dict', yum_server.yum_repos.ANY_NAME) }}"

我这里的问题是,我不知道如何迭代嵌套字典。 我希望有人能帮助我。可能循环不是实现这一点的最佳方式


Tags: keynameloopvaluerepositorydescriptionansibleitem