
When using neutron routed networks we need to specify either the subnet or a ip address in the fixed-ips-request when creating neutron ports. a) For the Vip's: Adds VipSubnetMap and VipSubnetMapDefaults parameters in service_net_map.yaml. The two maps are merged, so that the operator can override the subnet where VIP port should be hosted. For example: parameter_defaults: VipSubnetMap: ctlplane: ctlplane-leaf1 InternalApi: internal_api_leaf1 Storage: storage_leaf1 redis: internal_api_leaf1 b) For overcloud node ports: Enrich 'networks' in roles defenition to include both network and subnet data. Changes the list to a map instead of a list of strings. New schema: - name: <role_name> networks: <network_name> subnet: <subnet_name> For backward compatibility a conditional is used to check if the data is a map or not. In either case the internal list of role networks is created as '_role_networks' in the jinja2 templates. When the data is a map, and the map contains the 'subnet' key the subnet specified in roles_data.yaml is used as the subnet in the fixed-ips-reqest when ports are created. If subnet is not set (or role.networks is not a map) the default will be {{network.name_lower}}_subnet. Also, since the fixed_ips request passed to Vip ports are no longer [] by default, the conditinal has been updated to test for 'ip_address' entries in the request. Partial: blueprint tripleo-routed-networks-templates Depends-On: I773a38fd903fe287132151a4d178326a46890969 Change-Id: I77edc82723d00bfece6752b5dd2c79137db93443
194 lines
6.7 KiB
YAML
194 lines
6.7 KiB
YAML
heat_template_version: rocky
|
|
|
|
description: >
|
|
Mapping of service_name_network -> network name
|
|
|
|
parameters:
|
|
ServiceNetMap:
|
|
description: Mapping of service_name -> network name. Typically set
|
|
via parameter_defaults in the resource registry. This
|
|
mapping overrides those in ServiceNetMapDefaults.
|
|
Note that the key in this map must match the service_name
|
|
in the service template, e.g if the service_name is heat_api
|
|
the key must be either heat_api_network, or optionally
|
|
HeatApiNetwork (which will be internally converted to
|
|
transform captalization to underscores).
|
|
default: {}
|
|
type: json
|
|
|
|
# Note that the key in this map must match the service_name
|
|
# see the description above about conversion from CamelCase to
|
|
# snake_case - the names must still match when converted
|
|
ServiceNetMapDefaults:
|
|
default:
|
|
# Note the values in this map are replaced by *NetName
|
|
# to allow for sane defaults when the network names are
|
|
# overridden.
|
|
ApacheNetwork: internal_api
|
|
NeutronTenantNetwork: tenant
|
|
AodhApiNetwork: internal_api
|
|
PankoApiNetwork: internal_api
|
|
BarbicanApiNetwork: internal_api
|
|
GnocchiApiNetwork: internal_api
|
|
MongodbNetwork: internal_api
|
|
CinderApiNetwork: internal_api
|
|
CinderIscsiNetwork: storage
|
|
CongressApiNetwork: internal_api
|
|
GlanceApiNetwork: internal_api
|
|
IronicApiNetwork: ctlplane
|
|
IronicNetwork: ctlplane
|
|
IronicInspectorNetwork: ctlplane
|
|
KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
|
|
KeystonePublicApiNetwork: internal_api
|
|
ManilaApiNetwork: internal_api
|
|
MetricsQdrNetwork: internal_api
|
|
NeutronApiNetwork: internal_api
|
|
OctaviaApiNetwork: internal_api
|
|
HeatApiNetwork: internal_api
|
|
HeatApiCfnNetwork: internal_api
|
|
HeatApiCloudwatchNetwork: internal_api
|
|
NovaApiNetwork: internal_api
|
|
NovaPlacementNetwork: internal_api
|
|
NovaMetadataNetwork: internal_api
|
|
NovaVncProxyNetwork: internal_api
|
|
NovaLibvirtNetwork: internal_api
|
|
NovajoinNetwork: internal_api
|
|
Ec2ApiNetwork: internal_api
|
|
Ec2ApiMetadataNetwork: internal_api
|
|
TackerApiNetwork: internal_api
|
|
SwiftStorageNetwork: storage_mgmt
|
|
SwiftProxyNetwork: storage
|
|
SaharaApiNetwork: internal_api
|
|
HorizonNetwork: internal_api
|
|
MemcachedNetwork: internal_api
|
|
OsloMessagingRpcNetwork: internal_api
|
|
OsloMessagingNotifyNetwork: internal_api
|
|
RabbitmqNetwork: internal_api
|
|
QdrNetwork: internal_api
|
|
RedisNetwork: internal_api
|
|
GaneshaNetwork: storage_nfs
|
|
MysqlNetwork: internal_api
|
|
SnmpdNetwork: ctlplane
|
|
CephClusterNetwork: storage_mgmt
|
|
CephMonNetwork: storage
|
|
CephRgwNetwork: storage
|
|
PublicNetwork: external
|
|
OpendaylightApiNetwork: internal_api
|
|
OvnDbsNetwork: internal_api
|
|
MistralApiNetwork: internal_api
|
|
ZaqarApiNetwork: internal_api
|
|
DockerRegistryNetwork: ctlplane
|
|
PacemakerRemoteNetwork: internal_api
|
|
TripleoUINetwork: internal_api
|
|
DesignateApiNetwork: internal_api
|
|
BINDNetwork: external
|
|
# We special-case the default ResolveNetwork for the CephStorage role
|
|
# for backwards compatibility, all other roles default to internal_api
|
|
CephStorageHostnameResolveNetwork: storage
|
|
EtcdNetwork: internal_api
|
|
OpenshiftMasterNetwork: internal_api
|
|
OpenshiftInfraNetwork: internal_api
|
|
{% for role in roles if role.name != 'CephStorage' %}
|
|
{{role.name}}HostnameResolveNetwork: internal_api
|
|
{% endfor %}
|
|
description: Mapping of service_name -> network name. Typically set
|
|
via parameter_defaults in the resource registry.
|
|
type: json
|
|
|
|
ControlPlaneSubnet:
|
|
description: The name of the undercloud Neutron control plane subnet
|
|
default: ctlplane-subnet
|
|
type: string
|
|
|
|
VipSubnetMap:
|
|
description: Map of (network_name or service_name) -> subnet_name that
|
|
defines which subnet to host the VIP.
|
|
default: {}
|
|
type: json
|
|
|
|
VipSubnetMapDefaults:
|
|
default:
|
|
ctlplane: ctlplane-subnet
|
|
{%- for network in networks if network.vip|default(false) %}
|
|
{{network.name}}: {{network.name_lower}}_subnet
|
|
{%- endfor %}
|
|
redis: internal_api_subnet
|
|
type: json
|
|
|
|
# We define mappings to work around names that break when doing the
|
|
# CamelCase to snake_case conversion to align with service_names
|
|
ServiceNetMapDeprecatedMapping:
|
|
default:
|
|
MongoDbNetwork: MongodbNetwork
|
|
RabbitMqNetwork: RabbitmqNetwork
|
|
CephPublicNetwork: CephMonNetwork
|
|
SwiftMgmtNetwork: SwiftStorageNetwork
|
|
description: Mapping older deprecated service names, intended for
|
|
internal use only, this will be removed in future.
|
|
type: json
|
|
|
|
{%- for network in networks %}
|
|
{{network.name}}NetName:
|
|
default: {{network.name_lower}}
|
|
description: The name of the {{network.name_lower}} network.
|
|
type: string
|
|
{%- endfor %}
|
|
|
|
parameter_groups:
|
|
- label: deprecated
|
|
description: Do not use deprecated params, they will be removed.
|
|
parameters:
|
|
- ServiceNetMapDeprecatedMapping
|
|
|
|
resources:
|
|
ServiceNetMapValue:
|
|
type: OS::Heat::Value
|
|
properties:
|
|
type: json
|
|
value:
|
|
map_merge:
|
|
- map_replace:
|
|
- {get_param: ServiceNetMapDefaults}
|
|
- values:
|
|
{%- for network in networks %}
|
|
{%- if network.service_net_map_replace is defined %}
|
|
{{network.service_net_map_replace}}: {{network.name_lower}}
|
|
{%- else %}
|
|
{{network.name_lower}}: {get_param: {{network.name}}NetName}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
- map_replace:
|
|
- {get_param: ServiceNetMap}
|
|
- keys: {get_param: ServiceNetMapDeprecatedMapping}
|
|
|
|
VipSubnetMapValue:
|
|
type: OS::Heat::Value
|
|
properties:
|
|
type: json
|
|
value:
|
|
map_merge:
|
|
# (hjensas): We need to map_replace the ctlplane-subnet to support
|
|
# legacy parameter ControlPlaneSubnet.
|
|
- map_replace:
|
|
- {get_param: VipSubnetMapDefaults}
|
|
- values:
|
|
ctlplane-subnet: {get_param: ControlPlaneSubnet}
|
|
- {get_param: VipSubnetMap}
|
|
|
|
outputs:
|
|
service_net_map:
|
|
value: {get_attr: [ServiceNetMapValue, value]}
|
|
|
|
service_net_map_lower:
|
|
value:
|
|
# This does a conversion from CamelCase to snake_case,
|
|
# e.g HeatApiNetwork becomes heat_api_network so it
|
|
# matches the service names.
|
|
yaql:
|
|
expression: dict($.data.map.items().select([ regex(`([a-z0-9])([A-Z])`).replace($[0], '\\1_\\2').toLower(), $[1]]))
|
|
data:
|
|
map: {get_attr: [ServiceNetMapValue, value]}
|
|
|
|
vip_subnet_map:
|
|
value: {get_attr: [VipSubnetMapValue, value]}
|