我有一个用于openstack的热模板,并且在其中allowed_address_pairs属性中。最近,我升级到了openstack摇滚风格,并且开始遇到allowed_address_pairs要求cidr表示的问题,即172.27.44.32/32。
在我的YAML文档中,我将IP地址作为逗号分隔的列表,并使用以下代码进行解析
allowed_address_pairs:
repeat:
for_each:
<%ipaddr%>: {get_param: mrfp_bearer_ips }
template:
ip_address: <%ipaddr%>
replacement_policy: AUTO
其中mrfp_bearer_ips是用逗号分隔的列表。
我想将cidr附加到该列表中的每个IP地址,例如172.27.44.32/32。我尝试了以下代码
allowed_address_pairs:
repeat:
for_each:
<%ipaddr%>: {get_param: mrfp_bearer_ips }
template:
ip_address:
str_replace:
template:<%ipaddr%>/$cidr
params:
$cidr: { if: [ "mode","32","128" ] }
replacement_policy: AUTO
其中mode是条件,其结果为true或false。但这给与地图有关的问题。
我得到的错误是:
WorkflowHeatOperationError:堆栈操作错误!堆栈ID:412a908d-2a63-46d8-b790-a8e341d8feca,预期状态:COMPLETE,实际状态:FAILED,原因:资源创建失败:资源1:resources.mrfp_group.Property错误:resources.sig_port.properties.allowed_address_pairs [0]:“ [{u'ip_address':u'10.204.9.178 / 32'}]”不是地图
如何将cidr添加到重复部分生成的列表中的每个元素。 我是YAML的新手。我还发现了一个link可能对您有所帮助,但我无法理解: