Ansible Fact - 将 Ansible Fact 变量解析为字典

Ansible Fact - Parsing Ansible Fact Variable to Dictionary

我正在使用 Ansible os_project_facts 用于收集 OpenStack 管理项目 ID 的模块。 这是 ansible_fact 日志:

  ansible_facts:
    openstack_projects:
    - description: Bootstrap project for initializing the cloud.
      domain_id: default
      enabled: true
      id: <PROJECT_ID>
      is_domain: false
      is_enabled: true
      location:
        cloud: envvars
        project:
          domain_id: default
          domain_name: null
          id: default
          name: null
        region_name: null
        zone: null
      name: admin
      options: {}
      parent_id: default
      properties:
        options: {}
        tags: []
      tags: []

显然,这不是字典,而且我无法得到 openstack_projects.id 因为它不是字典。如何检索 PROJECT_ID 并将其用于其他任务?

由于openstack_projects facts包含带有字典的单个列表元素,我们可以使用数组索引方法获取id,即openstack_projects[0]['id'].

可以直接使用,也可以使用set_fact:

- name: get the project id
  set_fact:
    project_id: "{{ openstack_projects[0]['id'] }}"