L3 routed networks - subnet fixed_ips (3/3)

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
This commit is contained in:
Harald Jensås 2018-07-12 18:27:08 +02:00
parent 2c44fe081b
commit 2f2d8183e6
59 changed files with 559 additions and 201 deletions

View File

@ -23,12 +23,23 @@ resource_registry:
# Port assignments for each role are determined by the role definition. # Port assignments for each role are determined by the role definition.
{%- for role in roles %} {%- for role in roles %}
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
# Port assignments for the {{role.name}} role. # Port assignments for the {{role.name}} role.
{%- for network in networks %} {%- for network in networks %}
{%- if network.name in role.networks|default([]) and network.enabled|default(true) and network.name != 'Tenant'%} {%- if network.name in _role_networks and network.enabled|default(true) and network.name != 'Tenant'%}
OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml
{%- elif network.enabled|default(true) %} {%- elif network.enabled|default(true) %}
OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/noop.yaml OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/noop.yaml
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
{% endfor %} {%- endfor %}

View File

@ -35,16 +35,27 @@ resource_registry:
# Port assignments by role, edit role definition to assign networks to roles. # Port assignments by role, edit role definition to assign networks to roles.
{%- for role in roles %} {%- for role in roles %}
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
# Port assignments for the {{role.name}} # Port assignments for the {{role.name}}
{%- for network in networks %} {%- for network in networks %}
{%- if network.name in role.networks|default([]) and network.enabled|default(true) and network.name != 'Tenant' %} {%- if network.name in _role_networks and network.enabled|default(true) and network.name != 'Tenant' %}
OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml
{%- elif network.name in role.networks|default([]) and network.enabled|default(true) and network.name == 'Tenant' %} {%- elif network.name in _role_networks and network.enabled|default(true) and network.name == 'Tenant' %}
# IPv4 until OVS and Neutron support IPv6 tunnel endpoints # IPv4 until OVS and Neutron support IPv6 tunnel endpoints
OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
{% endfor %} {%- endfor %}
parameter_defaults: parameter_defaults:

View File

@ -24,10 +24,21 @@ resource_registry:
# Port assignments by role, edit role definition to assign networks to roles. # Port assignments by role, edit role definition to assign networks to roles.
{%- for role in roles %} {%- for role in roles %}
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
# Port assignments for the {{role.name}} # Port assignments for the {{role.name}}
{%- for network in networks %} {%- for network in networks %}
{%- if network.name in role.networks|default([]) and network.enabled|default(true) %} {%- if network.name in _role_networks and network.enabled|default(true) %}
OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
{% endfor %} {%- endfor %}

View File

@ -1,3 +1,14 @@
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
heat_template_version: rocky heat_template_version: rocky
description: > description: >
Software Config to drive os-net-config with 2 Linux bonds. One bond is on a Software Config to drive os-net-config with 2 Linux bonds. One bond is on a
@ -32,7 +43,7 @@ parameters:
guaranteed to pass through the data path of the segments in the network. guaranteed to pass through the data path of the segments in the network.
(The parameter is automatically resolved from the ctlplane network's mtu attribute.) (The parameter is automatically resolved from the ctlplane network's mtu attribute.)
type: number type: number
{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} {%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
{{network.name}}IpSubnet: {{network.name}}IpSubnet:
default: '' default: ''
@ -110,7 +121,7 @@ resources:
expression: $.data.max() expression: $.data.max()
data: data:
- {get_param: ControlPlaneMtu} - {get_param: ControlPlaneMtu}
{%- for network in networks if network.enabled|default(true) and network.name in role.networks and not network.name.startswith('Tenant') %} {%- for network in networks if network.enabled|default(true) and network.name in _role_networks and not network.name.startswith('Tenant') %}
- {get_param: {{network.name}}Mtu} - {get_param: {{network.name}}Mtu}
{%- endfor %} {%- endfor %}
@ -127,7 +138,7 @@ resources:
expression: $.data.max() expression: $.data.max()
data: data:
- {get_param: ControlPlaneMtu} - {get_param: ControlPlaneMtu}
{%- for network in networks if network.name.startswith('Tenant') and network.enabled|default(true) and network.name in role.networks %} {%- for network in networks if network.name.startswith('Tenant') and network.enabled|default(true) and network.name in _role_networks %}
- {get_param: {{network.name}}Mtu} - {get_param: {{network.name}}Mtu}
{%- endfor %} {%- endfor %}
@ -183,7 +194,7 @@ resources:
name: nic3 name: nic3
mtu: mtu:
get_attr: [MinViableMtuBondApi, value] get_attr: [MinViableMtuBondApi, value]
{%- for network in networks if network.enabled|default(true) and network.name in role.networks and not network.name.startswith('Tenant') %} {%- for network in networks if network.enabled|default(true) and network.name in _role_networks and not network.name.startswith('Tenant') %}
- type: vlan - type: vlan
device: bond_api device: bond_api
mtu: mtu:
@ -224,7 +235,7 @@ resources:
name: nic5 name: nic5
mtu: mtu:
get_attr: [MinViableMtuBondData, value] get_attr: [MinViableMtuBondData, value]
{%- for network in networks if network.name.startswith('Tenant') and network.name in role.networks and network.enabled|default(true) %} {%- for network in networks if network.name.startswith('Tenant') and network.name in _role_networks and network.enabled|default(true) %}
- type: vlan - type: vlan
device: bond-data device: bond-data
mtu: mtu:
@ -247,7 +258,7 @@ resources:
- type: ovs_user_bridge - type: ovs_user_bridge
name: br-dpdk0 name: br-dpdk0
use_dhcp: false use_dhcp: false
{%- for network in networks if network.name.startswith('Tenant') and network.name in role.networks and network.enabled|default(true) %} {%- for network in networks if network.name.startswith('Tenant') and network.name in _role_networks and network.enabled|default(true) %}
ovs_extra: ovs_extra:
- str_replace: - str_replace:
template: set port br-dpdk0 tag=_VLAN_TAG_ template: set port br-dpdk0 tag=_VLAN_TAG_

View File

@ -1,3 +1,14 @@
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
heat_template_version: rocky heat_template_version: rocky
description: > description: >
Software Config to drive os-net-config with 2 bonded nics on a bridge with VLANs attached for the {{role.name}} role. Software Config to drive os-net-config with 2 bonded nics on a bridge with VLANs attached for the {{role.name}} role.
@ -168,7 +179,7 @@ resources:
name: nic3 name: nic3
mtu: mtu:
get_attr: [MinViableMtu, value] get_attr: [MinViableMtu, value]
{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} {%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
- type: vlan - type: vlan
mtu: mtu:
get_param: {{network.name}}Mtu get_param: {{network.name}}Mtu
@ -207,7 +218,7 @@ resources:
name: nic3 name: nic3
mtu: mtu:
get_attr: [MinViableMtu, value] get_attr: [MinViableMtu, value]
{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} {%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
- type: vlan - type: vlan
device: bond_api device: bond_api
mtu: mtu:

View File

@ -1,3 +1,14 @@
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
heat_template_version: rocky heat_template_version: rocky
description: > description: >
Software Config to drive os-net-config to configure multiple interfaces for the {{role.name}} role. Software Config to drive os-net-config to configure multiple interfaces for the {{role.name}} role.
@ -123,7 +134,7 @@ resources:
{%- set nics_used = [1] %} {%- set nics_used = [1] %}
{%- for network in networks if network.enabled|default(true) and network.name not in role.networks_skip_config|default([]) %} {%- for network in networks if network.enabled|default(true) and network.name not in role.networks_skip_config|default([]) %}
{%- if network.name not in ["External", "Tenant"] %} {%- if network.name not in ["External", "Tenant"] %}
{%- if network.name in role.networks %} {%- if network.name in _role_networks %}
- type: interface - type: interface
name: nic{{loop.index + 1}} name: nic{{loop.index + 1}}
mtu: mtu:
@ -153,7 +164,7 @@ resources:
dns_servers: dns_servers:
get_param: DnsServers get_param: DnsServers
use_dhcp: false use_dhcp: false
{%- if network.name in role.networks %} {%- if network.name in _role_networks %}
addresses: addresses:
- ip_netmask: - ip_netmask:
get_param: {{network.name}}IpSubnet get_param: {{network.name}}IpSubnet

View File

@ -1,3 +1,14 @@
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
heat_template_version: rocky heat_template_version: rocky
description: > description: >
Software Config to drive os-net-config to configure VLANs for the {{role.name}} role. Software Config to drive os-net-config to configure VLANs for the {{role.name}} role.
@ -31,7 +42,7 @@ parameters:
guaranteed to pass through the data path of the segments in the network. guaranteed to pass through the data path of the segments in the network.
(The parameter is automatically resolved from the ctlplane network's mtu attribute.) (The parameter is automatically resolved from the ctlplane network's mtu attribute.)
type: number type: number
{% for network in networks if network.enabled|default(true) and network.name in role.networks %} {% for network in networks if network.enabled|default(true) and network.name in _role_networks %}
{{network.name}}IpSubnet: {{network.name}}IpSubnet:
default: '' default: ''
description: IP address/subnet on the {{network.name_lower}} network description: IP address/subnet on the {{network.name_lower}} network
@ -93,7 +104,7 @@ resources:
expression: $.data.max() expression: $.data.max()
data: data:
- {get_param: ControlPlaneMtu} - {get_param: ControlPlaneMtu}
{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} {%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
- {get_param: {{network.name}}Mtu} - {get_param: {{network.name}}Mtu}
{%- endfor %} {%- endfor %}
@ -142,7 +153,7 @@ resources:
mtu: mtu:
get_attr: [MinViableMtu, value] get_attr: [MinViableMtu, value]
primary: true primary: true
{%- for network in networks if network.enabled|default(true) and network.name in role.networks {%- for network in networks if network.enabled|default(true) and network.name in _role_networks
and network.name not in role.networks_skip_config|default([]) %} and network.name not in role.networks_skip_config|default([]) %}
- type: vlan - type: vlan
mtu: mtu:

View File

@ -1,3 +1,14 @@
{#- Convert net map or net list to internal list of networks #}
{#- NOTE(hjensas): For backward compatibility support role data with both #}
{#- networks map (new schema) and network list (old schema). #}
{%- set _role_networks = [] %}
{%- if role.networks is mapping %}
{%- for key,val in role.networks.items() %}
{%- set _role_networks = _role_networks.append(key) %}
{%- endfor %}
{%- else %}
{%- set _role_networks = role.networks %}
{%- endif %}
heat_template_version: rocky heat_template_version: rocky
description: > description: >
Software Config to drive os-net-config to configure VLANs for the {{role.name}} role. Software Config to drive os-net-config to configure VLANs for the {{role.name}} role.
@ -143,7 +154,7 @@ resources:
get_attr: [MinViableMtu, value] get_attr: [MinViableMtu, value]
# force the MAC address of the bridge to this interface # force the MAC address of the bridge to this interface
primary: true primary: true
{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} {%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
- type: vlan - type: vlan
mtu: mtu:
get_param: {{network.name}}Mtu get_param: {{network.name}}Mtu

View File

@ -45,7 +45,9 @@ parameters:
conditions: conditions:
fixed_ip_not_set: fixed_ip_not_set:
equals: equals:
- get_param: FixedIPs - yaql:
expression: $.data.where($.get('ip_address'))
data: {get_param: FixedIPs}
- [] - []
resources: resources:

View File

@ -51,7 +51,9 @@ conditions:
- ctlplane - ctlplane
fixed_ip_not_set: fixed_ip_not_set:
equals: equals:
- get_param: FixedIPs - yaql:
expression: $.data.where($.get('ip_address'))
data: {get_param: FixedIPs}
- [] - []
net_is_ctlplane_and_fixed_ip_not_set: net_is_ctlplane_and_fixed_ip_not_set:
and: and:

View File

@ -49,7 +49,9 @@ conditions:
- ctlplane - ctlplane
fixed_ip_not_set: fixed_ip_not_set:
equals: equals:
- get_param: FixedIPs - yaql:
expression: $.data.where($.get('ip_address'))
data: {get_param: FixedIPs}
- [] - []
net_is_ctlplane_and_fixed_ip_not_set: net_is_ctlplane_and_fixed_ip_not_set:
and: and:

View File

@ -49,7 +49,9 @@ conditions:
- ctlplane - ctlplane
fixed_ip_not_set: fixed_ip_not_set:
equals: equals:
- get_param: FixedIPs - yaql:
expression: $.data.where($.get('ip_address'))
data: {get_param: FixedIPs}
- [] - []
net_is_ctlplane_and_fixed_ip_not_set: net_is_ctlplane_and_fixed_ip_not_set:
and: and:

View File

@ -95,6 +95,26 @@ parameters:
via parameter_defaults in the resource registry. via parameter_defaults in the resource registry.
type: json 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 # We define mappings to work around names that break when doing the
# CamelCase to snake_case conversion to align with service_names # CamelCase to snake_case conversion to align with service_names
ServiceNetMapDeprecatedMapping: ServiceNetMapDeprecatedMapping:
@ -141,6 +161,19 @@ resources:
- {get_param: ServiceNetMap} - {get_param: ServiceNetMap}
- keys: {get_param: ServiceNetMapDeprecatedMapping} - 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: outputs:
service_net_map: service_net_map:
@ -155,3 +188,6 @@ outputs:
expression: dict($.data.map.items().select([ regex(`([a-z0-9])([A-Z])`).replace($[0], '\\1_\\2').toLower(), $[1]])) expression: dict($.data.map.items().select([ regex(`([a-z0-9])([A-Z])`).replace($[0], '\\1_\\2').toLower(), $[1]]))
data: data:
map: {get_attr: [ServiceNetMapValue, value]} map: {get_attr: [ServiceNetMapValue, value]}
vip_subnet_map:
value: {get_attr: [VipSubnetMapValue, value]}

View File

@ -110,8 +110,6 @@ parameters:
Control the IP allocation for the ControlVirtualIP port. E.g. Control the IP allocation for the ControlVirtualIP port. E.g.
[{'ip_address':'1.2.3.4'}] [{'ip_address':'1.2.3.4'}]
type: json type: json
{%- for network in networks if network.vip|default(false) %}
{%- if network.name == 'External' %}
# TODO (dsneddon) Legacy name, eventually refactor to match network name # TODO (dsneddon) Legacy name, eventually refactor to match network name
PublicVirtualFixedIPs: PublicVirtualFixedIPs:
default: [] default: []
@ -119,14 +117,13 @@ parameters:
Control the IP allocation for the PublicVirtualInterface port. E.g. Control the IP allocation for the PublicVirtualInterface port. E.g.
[{'ip_address':'1.2.3.4'}] [{'ip_address':'1.2.3.4'}]
type: json type: json
{%- else %} {%- for network in networks if network.vip|default(false) and network.name != 'External' %}
{{network.name}}VirtualFixedIPs: {{network.name}}VirtualFixedIPs:
default: [] default: []
description: > description: >
Control the IP allocation for the {{network.name}}VirtualInterface port. E.g. Control the IP allocation for the {{network.name}}VirtualInterface port. E.g.
[{'ip_address':'1.2.3.4'}] [{'ip_address':'1.2.3.4'}]
type: json type: json
{%- endif %}
{%- endfor %} {%- endfor %}
RabbitCookieSalt: RabbitCookieSalt:
type: string type: string
@ -269,6 +266,23 @@ conditions:
ctlplane_subnet_cidr_set: ctlplane_subnet_cidr_set:
not: not:
equals: [{get_param: ControlPlaneSubnetCidr}, ''] equals: [{get_param: ControlPlaneSubnetCidr}, '']
{%- for network in networks if network.name != 'External' %}
{{network.name_lower}}_virtual_fixed_ip_set:
not:
equals:
- get_param: {{network.name}}VirtualFixedIPs
- []
{%- endfor %}
public_virtual_fixed_ip_set:
not:
equals:
- get_param: PublicVirtualFixedIPs
- []
redis_virtual_fixed_ip_set:
not:
equals:
- get_param: RedisVirtualFixedIPs
- []
resources: resources:
@ -799,20 +813,20 @@ resources:
type: OS::TripleO::Network type: OS::TripleO::Network
ControlVirtualIP: ControlVirtualIP:
depends_on: [Networks, ServiceNetMap]
type: OS::TripleO::Network::Ports::ControlPlaneVipPort type: OS::TripleO::Network::Ports::ControlPlaneVipPort
depends_on: Networks
properties: properties:
name: control_virtual_ip name: control_virtual_ip
network: {get_param: NeutronControlPlaneID} network: {get_param: NeutronControlPlaneID}
fixed_ips: fixed_ips:
if: if:
- control_fixed_ip_not_set - control_fixed_ip_not_set
- [{subnet: {get_param: ControlPlaneSubnet}}] - [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, ctlplane]}}]
- get_param: ControlFixedIPs - get_param: ControlFixedIPs
replacement_policy: AUTO replacement_policy: AUTO
RedisVirtualIP: RedisVirtualIP:
depends_on: Networks depends_on: [Networks, ServiceNetMap]
type: OS::TripleO::Network::Ports::RedisVipPort type: OS::TripleO::Network::Ports::RedisVipPort
properties: properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@ -825,13 +839,17 @@ resources:
PortName: redis_virtual_ip PortName: redis_virtual_ip
NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]} NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
ServiceName: redis ServiceName: redis
FixedIPs: {get_param: RedisVirtualFixedIPs} FixedIPs:
if:
- redis_virtual_fixed_ip_set
- {get_param: RedisVirtualFixedIPs}
- [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, redis]}}]
{%- for network in networks if network.vip|default(false) %} {%- for network in networks if network.vip|default(false) %}
{%- if network.name == 'External' %} {%- if network.name == 'External' %}
# The public VIP is on the External net, falls back to ctlplane # The public VIP is on the External net, falls back to ctlplane
PublicVirtualIP: PublicVirtualIP:
depends_on: Networks depends_on: [Networks, ServiceNetMap]
type: OS::TripleO::Network::Ports::ExternalVipPort type: OS::TripleO::Network::Ports::ExternalVipPort
properties: properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@ -842,10 +860,14 @@ resources:
- {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]} - {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]}
ControlPlaneNetwork: {get_param: NeutronControlPlaneID} ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
PortName: public_virtual_ip PortName: public_virtual_ip
FixedIPs: {get_param: PublicVirtualFixedIPs} FixedIPs:
if:
- public_virtual_fixed_ip_set
- {get_param: PublicVirtualFixedIPs}
- [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, {{network.name}}]}}]
{%- else %} {%- else %}
{{network.name}}VirtualIP: {{network.name}}VirtualIP:
depends_on: Networks depends_on: [Networks, ServiceNetMap]
type: OS::TripleO::Network::Ports::{{network.name}}VipPort type: OS::TripleO::Network::Ports::{{network.name}}VipPort
properties: properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@ -855,7 +877,11 @@ resources:
- {get_param: ControlPlaneSubnetCidr} - {get_param: ControlPlaneSubnetCidr}
- {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]} - {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]}
PortName: {{network.name_lower}}_virtual_ip PortName: {{network.name_lower}}_virtual_ip
FixedIPs: {get_param: {{network.name}}VirtualFixedIPs} FixedIPs:
if:
- {{network.name_lower}}_virtual_fixed_ip_set
- {get_param: {{network.name}}VirtualFixedIPs}
- [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, {{network.name}}]}}]
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}

View File

@ -466,7 +466,11 @@ resources:
if: if:
- {{role.name}}_{{network.name}}_fixed_ip_set - {{role.name}}_{{network.name}}_fixed_ip_set
- [{ip_address: {get_param: [{{role.name}}IPs, '{{network.name_lower}}', {get_param: NodeIndex}]}}] - [{ip_address: {get_param: [{{role.name}}IPs, '{{network.name_lower}}', {get_param: NodeIndex}]}}]
- [] {%- if role.networks is mapping and role.networks.get(network.name) %}
- [{subnet: {{role.networks[network.name].get('subnet', network.name_lower + '_subnet')}}}]
{%- else %}
- [{subnet: {{network.name_lower}}_subnet}]
{%- endif %}
ControlPlaneSubnetCidr: ControlPlaneSubnetCidr:
if: if:
- ctlplane_subnet_cidr_set - ctlplane_subnet_cidr_set
@ -476,7 +480,6 @@ resources:
- yaql: - yaql:
expression: str("{0}".format($.data).split("/")[-1]) expression: str("{0}".format($.data).split("/")[-1])
data: {get_attr: [{{server_resource_name}}, addresses, ctlplane, 0, subnets, 0, cidr]} data: {get_attr: [{{server_resource_name}}, addresses, ctlplane, 0, subnets, 0, cidr]}
IPPool: IPPool:
map_merge: map_merge:
{%- if role.deprecated_param_ips is defined %} {%- if role.deprecated_param_ips is defined %}

View File

@ -0,0 +1,48 @@
---
features:
- |
Composable Networks now support creating L3 routed networks. L3 networks
use multiple L2 network segments and multiple ip subnets. In addition to
the base subnet automatically created for any composable network,
additional subnets can be defined under the ``subnets`` key for each
network in the data file (``network_data.yaml``) used by composable
networks. Please refer to the ``network_data_subnets_routed.yaml`` file for
an example demonstrating how to define composable L3 routed networks.
- |
For composable roles it is now possible to control which subnet in a L3
routed network will host network ports for the role. This is done by
setting the subnet for each network in the role defenition
(``roles_data.yaml``). For example::
- name: <role_name>
networks:
InternalApi:
subnet: internal_api_leaf2
Tenant:
subnet: tenant_leaf2
Storage:
subnet: storage_leaf2
- |
To enable control of which subnet is used for virtual IPs on L3 routed
composable networks the new parameter ``VipSubnetMap`` where added. This
allow the user to override the subnet where the VIP port should be hosted.
For example::
parameter_defaults:
VipSubnetMap:
ctlplane: ctlplane-leaf1
InternalApi: internal_api_leaf1
Storage: storage_leaf1
redis: internal_api_leaf1
upgrade:
- |
Deployments using custom names for subnets must also set the subnet to use
for the roles used in the deployment. I.e if ``NetworkNameSubnetName``
parameter was used to define a non-default subnet name for any network, the
role defenition (``roles_data.yaml``) and ``VipSubnetMap`` parameter
must use the same value.
.. Warning:: The update will fail if ``<NetworkName>SubnetName`` was used
to set a custom subnet name, and the role defenition and/or
the ``VipSubnetMap`` is not set to match the custom subnet
name.

View File

@ -5,9 +5,12 @@
description: | description: |
Cinder Block Storage node role Cinder Block Storage node role
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
- StorageMgmt Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
uses_deprecated_params: False uses_deprecated_params: False
deprecated_nic_config_name: 'cinder-storage.yaml' deprecated_nic_config_name: 'cinder-storage.yaml'
ServicesDefault: ServicesDefault:

View File

@ -5,8 +5,10 @@
description: | description: |
Standalone Storage Full Role (OSD + MON + RGW + MDS + MGR + RBD Mirroring) Standalone Storage Full Role (OSD + MON + RGW + MDS + MGR + RBD Mirroring)
networks: networks:
- Storage Storage:
- StorageMgmt subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
HostnameFormatDefault: '%stackname%-ceph-all-%index%' HostnameFormatDefault: '%stackname%-ceph-all-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,8 +5,10 @@
description: | description: |
Standalone Scale-out File Role (OSD + MDS) Standalone Scale-out File Role (OSD + MDS)
networks: networks:
- Storage Storage:
- StorageMgmt subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
HostnameFormatDefault: '%stackname%-ceph-file-%index%' HostnameFormatDefault: '%stackname%-ceph-file-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,8 +5,10 @@
description: | description: |
Standalone Scale-out Object Role (OSD + RGW) Standalone Scale-out Object Role (OSD + RGW)
networks: networks:
- Storage Storage:
- StorageMgmt subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
HostnameFormatDefault: '%stackname%-ceph-object-%index%' HostnameFormatDefault: '%stackname%-ceph-object-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,8 +5,10 @@
description: | description: |
Ceph OSD Storage node role Ceph OSD Storage node role
networks: networks:
- Storage Storage:
- StorageMgmt subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
uses_deprecated_params: False uses_deprecated_params: False
deprecated_nic_config_name: 'ceph-storage.yaml' deprecated_nic_config_name: 'ceph-storage.yaml'
ServicesDefault: ServicesDefault:

View File

@ -6,9 +6,12 @@
Basic Compute Node role Basic Compute Node role
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-novacompute-%index%' HostnameFormatDefault: '%stackname%-novacompute-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "virtual-host" TunedProfileName: "virtual-host"

View File

@ -6,9 +6,12 @@
Alternate Compute Node role Alternate Compute Node role
CountDefault: 0 CountDefault: 0
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-novacomputealt-%index%' HostnameFormatDefault: '%stackname%-novacomputealt-%index%'
disable_constraints: True disable_constraints: True
RoleParametersDefault: RoleParametersDefault:

View File

@ -6,9 +6,12 @@
DVR enabled Compute Node role DVR enabled Compute Node role
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-novacompute-dvr-%index%' HostnameFormatDefault: '%stackname%-novacompute-dvr-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "virtual-host" TunedProfileName: "virtual-host"

View File

@ -5,10 +5,14 @@
description: | description: |
Compute Node role hosting Ceph OSD too Compute Node role hosting Ceph OSD too
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
- StorageMgmt subnet: tenant_subnet
Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "throughput-performance" TunedProfileName: "throughput-performance"
ServicesDefault: ServicesDefault:

View File

@ -6,9 +6,12 @@
Compute Instance HA Node role to be used with -e environments/compute-instanceha.yaml Compute Instance HA Node role to be used with -e environments/compute-instanceha.yaml
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-novacomputeiha-%index%' HostnameFormatDefault: '%stackname%-novacomputeiha-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "virtual-host" TunedProfileName: "virtual-host"

View File

@ -6,9 +6,12 @@
Compute Node with Cavium Liquidio smart NIC Compute Node with Cavium Liquidio smart NIC
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
networks_skip_config: networks_skip_config:
- Tenant - Tenant
HostnameFormatDefault: '%stackname%-lionovacompute-%index%' HostnameFormatDefault: '%stackname%-lionovacompute-%index%'

View File

@ -6,9 +6,12 @@
Compute OvS DPDK Role Compute OvS DPDK Role
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
deprecated_nic_config_name: 'compute-dpdk.yaml' deprecated_nic_config_name: 'compute-dpdk.yaml'
RoleParametersDefault: RoleParametersDefault:
VhostuserSocketGroup: "hugetlbfs" VhostuserSocketGroup: "hugetlbfs"

View File

@ -6,9 +6,12 @@
Compute OvS DPDK RealTime Role Compute OvS DPDK RealTime Role
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
ImageDefault: overcloud-realtime-compute ImageDefault: overcloud-realtime-compute
RoleParametersDefault: RoleParametersDefault:
VhostuserSocketGroup: "hugetlbfs" VhostuserSocketGroup: "hugetlbfs"

View File

@ -6,9 +6,12 @@
Basic Compute Node role for ppc64le servers Basic Compute Node role for ppc64le servers
CountDefault: 0 CountDefault: 0
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-novacomputeppc64le-%index%' HostnameFormatDefault: '%stackname%-novacomputeppc64le-%index%'
ImageDefault: ppc64le-overcloud-full ImageDefault: ppc64le-overcloud-full
RoleParametersDefault: RoleParametersDefault:

View File

@ -9,9 +9,12 @@
accordingly to the hardware of the real-time compute nodes. accordingly to the hardware of the real-time compute nodes.
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-computerealtime-%index%' HostnameFormatDefault: '%stackname%-computerealtime-%index%'
ImageDefault: overcloud-realtime-compute ImageDefault: overcloud-realtime-compute
RoleParametersDefault: RoleParametersDefault:

View File

@ -6,9 +6,12 @@
Compute SR-IOV Role Compute SR-IOV Role
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "cpu-partitioning" TunedProfileName: "cpu-partitioning"
ServicesDefault: ServicesDefault:

View File

@ -6,9 +6,12 @@
Compute SR-IOV RealTime Role Compute SR-IOV RealTime Role
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
ImageDefault: overcloud-realtime-compute ImageDefault: overcloud-realtime-compute
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "realtime-virtual-host" TunedProfileName: "realtime-virtual-host"

View File

@ -10,11 +10,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
# For systems with both IPv4 and IPv6, you may specify a gateway network for # For systems with both IPv4 and IPv6, you may specify a gateway network for
# each, such as ['ControlPlane', 'External'] # each, such as ['ControlPlane', 'External']
default_route_networks: ['External'] default_route_networks: ['External']

View File

@ -10,11 +10,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
default_route_networks: ['External'] default_route_networks: ['External']
HostnameFormatDefault: '%stackname%-controller-%index%' HostnameFormatDefault: '%stackname%-controller-%index%'
ServicesDefault: ServicesDefault:

View File

@ -10,11 +10,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
default_route_networks: ['External'] default_route_networks: ['External']
HostnameFormatDefault: '%stackname%-controller-no-ceph-%index%' HostnameFormatDefault: '%stackname%-controller-no-ceph-%index%'
# Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Deprecated & backward-compatible values (FIXME: Make parameters consistent)

View File

@ -9,11 +9,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: interanl_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
default_route_networks: ['External'] default_route_networks: ['External']
HostnameFormatDefault: '%stackname%-controller-%index%' HostnameFormatDefault: '%stackname%-controller-%index%'
ServicesDefault: ServicesDefault:

View File

@ -10,11 +10,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
default_route_networks: ['External'] default_route_networks: ['External']
HostnameFormatDefault: '%stackname%-controller-%index%' HostnameFormatDefault: '%stackname%-controller-%index%'
ServicesDefault: ServicesDefault:

View File

@ -13,12 +13,18 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- StorageNFS Storage:
- Tenant subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
StorageNFS:
subnet: storage_nfs_subnet
Tenant:
subnet: tenant_subnet
HostnameFormatDefault: '%stackname%-controller-%index%' HostnameFormatDefault: '%stackname%-controller-%index%'
# Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Deprecated & backward-compatible values (FIXME: Make parameters consistent)
# Set uses_deprecated_params to True if any deprecated params are used. # Set uses_deprecated_params to True if any deprecated params are used.

View File

@ -5,7 +5,8 @@
description: | description: |
Standalone database role with the database being managed via Pacemaker Standalone database role with the database being managed via Pacemaker
networks: networks:
- InternalApi InternalApi:
subnet: internal_api_subnet
HostnameFormatDefault: '%stackname%-database-%index%' HostnameFormatDefault: '%stackname%-database-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,10 +5,14 @@
description: | description: |
HCI Full Stack Role (OSD + MON + Nova + RGW + MDS + MGR + RBD Mirroring) HCI Full Stack Role (OSD + MON + Nova + RGW + MDS + MGR + RBD Mirroring)
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
- StorageMgmt subnet: tenant_subnet
Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
HostnameFormatDefault: '%stackname%-hci-ceph-all-%index%' HostnameFormatDefault: '%stackname%-hci-ceph-all-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "throughput-performance" TunedProfileName: "throughput-performance"

View File

@ -5,10 +5,14 @@
description: | description: |
HCI Scale-out File Role (OSD + Nova + MDS) HCI Scale-out File Role (OSD + Nova + MDS)
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
- StorageMgmt subnet: tenant_subnet
Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
HostnameFormatDefault: '%stackname%-hci-ceph-file-%index%' HostnameFormatDefault: '%stackname%-hci-ceph-file-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "throughput-performance" TunedProfileName: "throughput-performance"

View File

@ -5,10 +5,14 @@
description: | description: |
HCI Scale-out Block Full Role (OSD + MON + MGR + Nova) HCI Scale-out Block Full Role (OSD + MON + MGR + Nova)
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
- StorageMgmt subnet: tenant_subnet
Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
HostnameFormatDefault: '%stackname%-hci-ceph-mon-%index%' HostnameFormatDefault: '%stackname%-hci-ceph-mon-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "throughput-performance" TunedProfileName: "throughput-performance"

View File

@ -5,10 +5,14 @@
description: | description: |
HCI Scale-out Object Role (OSD + Nova + RGW) HCI Scale-out Object Role (OSD + Nova + RGW)
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
- StorageMgmt subnet: tenant_subnet
Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
HostnameFormatDefault: '%stackname%-hci-ceph-object-%index%' HostnameFormatDefault: '%stackname%-hci-ceph-object-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "throughput-performance" TunedProfileName: "throughput-performance"

View File

@ -5,8 +5,10 @@
description: | description: |
Ironic Conductor node role Ironic Conductor node role
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-ironic-%index%' HostnameFormatDefault: '%stackname%-ironic-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,7 +5,8 @@
description: | description: |
Standalone messaging role with backends being managed via Pacemaker Standalone messaging role with backends being managed via Pacemaker
networks: networks:
- InternalApi InternalApi:
subnet: internal_api_subnet
HostnameFormatDefault: '%stackname%-messaging-%index%' HostnameFormatDefault: '%stackname%-messaging-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,8 +5,10 @@
description: | description: |
Standalone networking role to run Neutron agents on their own. Standalone networking role to run Neutron agents on their own.
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
Tenant:
subnet: tenant_subnet
HostnameFormatDefault: '%stackname%-networker-%index%' HostnameFormatDefault: '%stackname%-networker-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,8 +5,10 @@
description: | description: |
Standalone nova-control role to run Nova control agents on their own. Standalone nova-control role to run Nova control agents on their own.
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-novacontrol-%index%' HostnameFormatDefault: '%stackname%-novacontrol-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::AuditD - OS::TripleO::Services::AuditD

View File

@ -5,9 +5,12 @@
description: | description: |
Swift Object Storage node role Swift Object Storage node role
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
- StorageMgmt Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
# Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Deprecated & backward-compatible values (FIXME: Make parameters consistent)
# Set uses_deprecated_params to True if any deprecated params are used. # Set uses_deprecated_params to True if any deprecated params are used.
uses_deprecated_params: True uses_deprecated_params: True

View File

@ -13,9 +13,12 @@
- controller - controller
- openshift - openshift
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
subnet: internal_api_subnet
Storage:
subnet: storage_subnet
# For systems with both IPv4 and IPv6, you may specify a gateway network for # For systems with both IPv4 and IPv6, you may specify a gateway network for
# each, such as ['ControlPlane', 'External'] # each, such as ['ControlPlane', 'External']
default_route_networks: ['External'] default_route_networks: ['External']

View File

@ -11,8 +11,10 @@
tags: tags:
- openshift - openshift
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
Storage:
subnet: storage_subnet
# For systems with both IPv4 and IPv6, you may specify a gateway network for # For systems with both IPv4 and IPv6, you may specify a gateway network for
# each, such as ['ControlPlane', 'External'] # each, such as ['ControlPlane', 'External']
default_route_networks: ['ControlPlane'] default_route_networks: ['ControlPlane']

View File

@ -13,9 +13,12 @@
- controller - controller
- openshift - openshift
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
subnet: internal_api_subnet
Storage:
subnet: storage_subnet
# For systems with both IPv4 and IPv6, you may specify a gateway network for # For systems with both IPv4 and IPv6, you may specify a gateway network for
# each, such as ['ControlPlane', 'External'] # each, such as ['ControlPlane', 'External']
default_route_networks: ['External'] default_route_networks: ['External']

View File

@ -11,8 +11,10 @@
tags: tags:
- openshift - openshift
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
Storage:
subnet: storage_subnet
# For systems with both IPv4 and IPv6, you may specify a gateway network for # For systems with both IPv4 and IPv6, you may specify a gateway network for
# each, such as ['ControlPlane', 'External'] # each, such as ['ControlPlane', 'External']
default_route_networks: ['ControlPlane'] default_route_networks: ['ControlPlane']

View File

@ -12,11 +12,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
disable_constraints: True disable_constraints: True
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -5,8 +5,10 @@
description: | description: |
Telemetry role that has all the telemetry services. Telemetry role that has all the telemetry services.
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-telemetry-%index%' HostnameFormatDefault: '%stackname%-telemetry-%index%'
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide

View File

@ -11,11 +11,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide
- OS::TripleO::Services::AodhApi - OS::TripleO::Services::AodhApi

View File

@ -13,11 +13,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
# For systems with both IPv4 and IPv6, you may specify a gateway network for # For systems with both IPv4 and IPv6, you may specify a gateway network for
# each, such as ['ControlPlane', 'External'] # each, such as ['ControlPlane', 'External']
default_route_networks: ['External'] default_route_networks: ['External']
@ -193,9 +198,12 @@
Basic Compute Node role Basic Compute Node role
CountDefault: 1 CountDefault: 1
networks: networks:
- InternalApi InternalApi:
- Tenant subnet: internal_api_subnet
- Storage Tenant:
subnet: tenant_subnet
Storage:
subnet: storage_subnet
HostnameFormatDefault: '%stackname%-novacompute-%index%' HostnameFormatDefault: '%stackname%-novacompute-%index%'
RoleParametersDefault: RoleParametersDefault:
TunedProfileName: "virtual-host" TunedProfileName: "virtual-host"
@ -265,9 +273,12 @@
description: | description: |
Cinder Block Storage node role Cinder Block Storage node role
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
- StorageMgmt Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
uses_deprecated_params: False uses_deprecated_params: False
deprecated_nic_config_name: 'cinder-storage.yaml' deprecated_nic_config_name: 'cinder-storage.yaml'
ServicesDefault: ServicesDefault:
@ -307,9 +318,12 @@
description: | description: |
Swift Object Storage node role Swift Object Storage node role
networks: networks:
- InternalApi InternalApi:
- Storage subnet: internal_api_subnet
- StorageMgmt Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
# Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Deprecated & backward-compatible values (FIXME: Make parameters consistent)
# Set uses_deprecated_params to True if any deprecated params are used. # Set uses_deprecated_params to True if any deprecated params are used.
uses_deprecated_params: True uses_deprecated_params: True
@ -355,8 +369,10 @@
description: | description: |
Ceph OSD Storage node role Ceph OSD Storage node role
networks: networks:
- Storage Storage:
- StorageMgmt subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
uses_deprecated_params: False uses_deprecated_params: False
deprecated_nic_config_name: 'ceph-storage.yaml' deprecated_nic_config_name: 'ceph-storage.yaml'
ServicesDefault: ServicesDefault:

View File

@ -14,11 +14,16 @@
- primary - primary
- controller - controller
networks: networks:
- External External:
- InternalApi subnet: external_subnet
- Storage InternalApi:
- StorageMgmt subnet: internal_api_subnet
- Tenant Storage:
subnet: storage_subnet
StorageMgmt:
subnet: storage_mgmt_subnet
Tenant:
subnet: tenant_subnet
ServicesDefault: ServicesDefault:
- OS::TripleO::Services::Aide - OS::TripleO::Services::Aide
- OS::TripleO::Services::AodhApi - OS::TripleO::Services::AodhApi

View File

@ -478,7 +478,7 @@ def validate_multiarch_compute_roles(role_filename, role_tpl):
errors = 0 errors = 0
roles_dir = os.path.dirname(role_filename) roles_dir = os.path.dirname(role_filename)
compute_services = set(role_tpl[0].get('ServicesDefault', [])) compute_services = set(role_tpl[0].get('ServicesDefault', []))
compute_networks = set(role_tpl[0].get('networks', [])) compute_networks = role_tpl[0].get('networks', [])
for arch in ['ppc64le']: for arch in ['ppc64le']:
arch_filename = os.path.join(roles_dir, arch_filename = os.path.join(roles_dir,
@ -493,7 +493,7 @@ def validate_multiarch_compute_roles(role_filename, role_tpl):
print('ERROR problems with: %s' % (','.join(compute_services.symmetric_difference(arch_services)))) print('ERROR problems with: %s' % (','.join(compute_services.symmetric_difference(arch_services))))
errors = 1 errors = 1
arch_networks = set(arch_tpl[0].get('networks', [])) arch_networks = arch_tpl[0].get('networks', [])
if compute_networks != arch_networks: if compute_networks != arch_networks:
print('ERROR networks in %s and %s do not match' % print('ERROR networks in %s and %s do not match' %
(role_filename, arch_filename)) (role_filename, arch_filename))