我有一个艰巨的任务,要从yaml中读取字典变量,即子网[0](在group_vars的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 }}"
我尝试了 with_dict:“ {{subnets}}” ,然后尝试了 item.value.name 或 item.name ,但剧本失败并显示错误。如果不是所有对象都具有所有属性,也就是缺少子网[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
答案 0 :(得分:1)
与with_dict相比,它更接近with_items或with_subelements
您将像这样使用它:
- 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 }}"
子元素是您曾经拥有过此类项目的子元素的情况。检查文档以了解Ansbile中循环控制功能的更多用法。