У меня есть тепловой шаблон для openstack, и в этом есть свойство allow_address_pairs. Недавно я обновился до версии openstack rocky, и у меня появилась проблема для allow_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
где режим - условие, которое оценивается как истинное или ложное. Но это вызывает проблему, связанную с картой.
Я получаю ошибку:
WorkflowHeatOperationError: Ошибка операции стека! Идентификатор стека: 412a908d-2a63-46d8-b790-a8e341d8feca, ожидаемый статус: COMPLETE, фактический статус: FAILED, причина: сбой ресурса CREATE: resources 1 : resources.mrfp_group.Property error: resources.sig_port.properties .allowed_address_pairs [0]: "[{u'ip_address ': u'10.204.9.178 / 32'}]" не является картой
Как добавить cidr к каждому элементу в списке, созданном из повторяющегося раздела.
Я новичок в YAML. Я также нашел одну ссылку , которая может быть полезной, но я не смог ее понять: