如何用Ansible反复浏览字典?

如何用Ansible反复浏览字典?,ansible,Ansible,我的任务是从yaml即子网[0](在组变量的all.yml中)读取字典变量。如果我想重读整本字典呢 - name: Create and/or update the subnet azure_rm_subnet: name: "{{ subnets[0].name }}" address_prefix_cidr: "{{ subnets[0].prefix }}" route_table: "{{ subnets[0].udr }}"

我的任务是从yaml即子网[0](在组变量的all.yml中)读取字典变量。如果我想重读整本字典呢

- name: Create and/or update the subnet
      azure_rm_subnet:
        name: "{{ subnets[0].name }}"
        address_prefix_cidr: "{{ subnets[0].prefix }}"
        route_table: "{{ subnets[0].udr }}"    
我尝试了和_dict:“{{subnets}}”,然后是item.value.name或item.name,但playbook失败了,出现了一个错误。另外,如果不是所有对象都具有所有属性,即子网[1]。缺少udr,是否可以检查任务中是否存在属性?我的all.yml文件如下所示:

subnets:
  - 
    name: subnet1
    prefix: 10.2.1.0/24
    udr: rt1
    nsg: sg1

  -
    name: subnet2
    prefix: 10.2.1.0/24
    nsg: sg1
这更接近于手术室,而不是手术室

您可以这样使用它:

- name: Create and/or update the subnet
  azure_rm_subnet:
    name: "{{ item.name }}"
    address_prefix_cidr: "{{ item.prefix }}"
    route_table: "{{ item.udr }}"
  with_items:
    - "{{ subnets }}"
子元素是指您曾经拥有此类项的子元素的情况。检查文档以了解Anbile中循环控制功能的进一步用法。

它显示错误:“任务包含一个带有未定义变量的选项。错误是:'unicode对象'没有属性'name'