如何在Yaml的重复部分的模板部分中添加条件值?

时间:2019-04-11 12:15:13

标签: openstack openstack-neutron openstack-heat

我有一个用于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可能对您有所帮助,但我无法理解:

0 个答案:

没有答案