Merge "Rework neutron AZ configs considering OVN"
This commit is contained in:
commit
d435c789b4
|
@ -112,6 +112,33 @@ parameters:
|
|||
default: '500'
|
||||
type: string
|
||||
description: Number of ports allowed per tenant, and minus means unlimited.
|
||||
# TODO(bogdando): Right now OVN doesn't support AZ aware routing scheduling.
|
||||
# Later in Train cycle OVN ml2 driver will be extended to support it.
|
||||
# Until then, we have to determine if NeutronMechanismDrivers is OVN or OVS.
|
||||
NeutronMechanismDrivers:
|
||||
default: 'ovn'
|
||||
description: |
|
||||
The mechanism drivers for the Neutron tenant network.
|
||||
type: comma_delimited_list
|
||||
NeutronDefaultAvailabilityZones:
|
||||
description: Comma-separated list of default network availability zones to
|
||||
be used by Neutron if its resource is created without
|
||||
availability zone hints. If not set, no AZs will be configured
|
||||
for Neutron network services.
|
||||
default: ''
|
||||
type: comma_delimited_list
|
||||
NeutronNetworkSchedulerDriver:
|
||||
description: The network schedule driver to use for avialability zones.
|
||||
default: neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler
|
||||
type: string
|
||||
NeutronRouterSchedulerDriver:
|
||||
description: The router schedule driver to use for avialability zones.
|
||||
default: neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler
|
||||
type: string
|
||||
NeutronDhcpLoadType:
|
||||
description: Additional to the availability zones aware network scheduler.
|
||||
default: networks
|
||||
type: string
|
||||
# DEPRECATED: the following options are deprecated and are currently maintained
|
||||
# for backwards compatibility. They will be removed in the Ocata cycle.
|
||||
NeutronL3HA:
|
||||
|
@ -142,6 +169,9 @@ conditions:
|
|||
neutron_ovs_int_br_unset: {equals : [{get_param: NeutronOvsIntegrationBridge}, '']}
|
||||
internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
|
||||
neutron_dvr_unset: {equals : [{get_param: NeutronEnableDVR}, '']}
|
||||
ovn_enabled: {equals: [{get_param: NeutronMechanismDrivers}, 'ovn']}
|
||||
az_unset: {equals: [{get_param: NeutronDefaultAvailabilityZones}, '']}
|
||||
omit_az_configs: {or: [ovn_enabled, az_unset]}
|
||||
|
||||
resources:
|
||||
|
||||
|
@ -279,6 +309,18 @@ outputs:
|
|||
- neutron_ovs_int_br_unset
|
||||
- {}
|
||||
- neutron::server::ovs_integration_bridge: {get_param: NeutronOvsIntegrationBridge}
|
||||
-
|
||||
if:
|
||||
- omit_az_configs
|
||||
- {}
|
||||
-
|
||||
neutron::server::dhcp_load_type: {get_param: NeutronDhcpLoadType}
|
||||
neutron::server::network_scheduler_driver:
|
||||
{get_param: NeutronNetworkSchedulerDriver}
|
||||
neutron::server::router_scheduler_driver:
|
||||
{get_param: NeutronRouterSchedulerDriver}
|
||||
neutron::server::default_availability_zones:
|
||||
{get_param: NeutronDefaultAvailabilityZones}
|
||||
service_config_settings:
|
||||
fluentd:
|
||||
tripleo_fluentd_groups_neutron_api:
|
||||
|
|
|
@ -1,121 +0,0 @@
|
|||
heat_template_version: rocky
|
||||
|
||||
description: >
|
||||
Configuration of Neutron Availability Zones in the overcloud
|
||||
|
||||
parameters:
|
||||
ServiceData:
|
||||
default: {}
|
||||
description: Dictionary packing service data
|
||||
type: json
|
||||
ServiceNetMap:
|
||||
default: {}
|
||||
description: Mapping of service_name -> network name. Typically set
|
||||
via parameter_defaults in the resource registry. This
|
||||
mapping overrides those in ServiceNetMapDefaults.
|
||||
type: json
|
||||
DefaultPasswords:
|
||||
default: {}
|
||||
type: json
|
||||
RoleName:
|
||||
default: ''
|
||||
description: Role name on which the service is applied
|
||||
type: string
|
||||
RoleParameters:
|
||||
default: {}
|
||||
description: Parameters specific to the role
|
||||
type: json
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
AdminPassword:
|
||||
description: The password for the keystone admin account, used for
|
||||
monitoring, querying neutron etc.
|
||||
type: string
|
||||
hidden: true
|
||||
NeutronDefaultAvailabilityZones:
|
||||
description: Comma-separated list of default network availability zones to
|
||||
be used by Neutron if its resource is created without
|
||||
availability zone hints. If not set, the default will be equal
|
||||
to the stack/plan name.
|
||||
default: ''
|
||||
type: string
|
||||
NeutronL3AgentAvailabilityZone:
|
||||
description: Availability zone for Neutron L3 agent. If not set, the
|
||||
default will be equal to the stack/plan name
|
||||
default: ''
|
||||
type: string
|
||||
NeutronDhcpAgentAvailabilityZone:
|
||||
description: Availability zone for Neutron DHCP agent. If not set, the
|
||||
default will be equal to the stack/plan name
|
||||
default: ''
|
||||
type: string
|
||||
NeutronNetworkSchedulerDriver:
|
||||
description: The network schedule driver to use for avialability zones.
|
||||
default: neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler
|
||||
type: string
|
||||
NeutronRouterSchedulerDriver:
|
||||
description: The router schedule driver to use for avialability zones.
|
||||
default: neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler
|
||||
type: string
|
||||
NeutronDhcpLoadType:
|
||||
description: Additional to the availability zones aware network scheduler.
|
||||
default: networks
|
||||
type: string
|
||||
RootStackName:
|
||||
description: The name of the stack/plan.
|
||||
type: string
|
||||
|
||||
resources:
|
||||
NeutronAvailabilityZones:
|
||||
type: OS::Heat::Value
|
||||
properties:
|
||||
value:
|
||||
if:
|
||||
- equals:
|
||||
- {get_param: NeutronDefaultAvailabilityZones}
|
||||
- ""
|
||||
- {get_param: RootStackName}
|
||||
- {get_param: NeutronDefaultAvailabilityZones}
|
||||
|
||||
NeutronL3AgentAvailabilityZoneReal:
|
||||
type: OS::Heat::Value
|
||||
properties:
|
||||
value:
|
||||
if:
|
||||
- equals:
|
||||
- {get_param: NeutronL3AgentAvailabilityZone}
|
||||
- ""
|
||||
- {get_param: RootStackName}
|
||||
- {get_param: NeutronL3AgentAvailabilityZone}
|
||||
|
||||
NeutronDhcpAgentAvailabilityZoneReal:
|
||||
type: OS::Heat::Value
|
||||
properties:
|
||||
value:
|
||||
if:
|
||||
- equals:
|
||||
- {get_param: NeutronDhcpAgentAvailabilityZone}
|
||||
- ""
|
||||
- {get_param: RootStackName}
|
||||
- {get_param: NeutronDhcpAgentAvailabilityZone}
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Neutron Availability Zone configuration value
|
||||
service:
|
||||
service_name: neutron_az_config
|
||||
config_settings:
|
||||
neutron::server::dhcp_load_type: {get_param: NeutronDhcpLoadType}
|
||||
neutron::server::network_scheduler_driver:
|
||||
{get_param: NeutronNetworkSchedulerDriver}
|
||||
neutron::server::router_scheduler_driver:
|
||||
{get_param: NeutronRouterSchedulerDriver}
|
||||
neutron::server::default_availability_zones:
|
||||
{str_split: [',', {get_attr: [NeutronAvailabilityZones, value]}]}
|
||||
neutron::agents::l3::availability_zone:
|
||||
{get_attr: [NeutronL3AgentAvailabilityZoneReal, value]}
|
||||
neutron::agents::dhcp::availability_zone:
|
||||
{get_attr: [NeutronDhcpAgentAvailabilityZoneReal, value]}
|
|
@ -121,6 +121,21 @@ parameters:
|
|||
default: false
|
||||
description: Neutron DHCP agent to use broadcast in DHCP replies
|
||||
type: boolean
|
||||
# TODO(bogdando): The experimental OVN SRIOV environment includes the
|
||||
# DHCP agent service. We keep it safe to not break it with AZ-related
|
||||
# configurations. Therefore, we have to determine, if
|
||||
# NeutronMechanismDrivers is OVN or not. This may change in future,
|
||||
# when OVN/SRIOV supports Neutron AZ configurations for the agent services.
|
||||
NeutronMechanismDrivers:
|
||||
default: 'ovn'
|
||||
description: |
|
||||
The mechanism drivers for the Neutron tenant network.
|
||||
type: comma_delimited_list
|
||||
NeutronDhcpAgentAvailabilityZone:
|
||||
description: Availability zone for Neutron DHCP agent. If not set,
|
||||
no AZs will be configured for Neutron network services.
|
||||
default: ''
|
||||
type: string
|
||||
|
||||
conditions:
|
||||
|
||||
|
@ -131,6 +146,9 @@ conditions:
|
|||
service_wrapper_debug_unset: {equals : [{get_param: NeutronWrapperDebug}, false]}
|
||||
service_debug_unset: {equals: [{get_param: NeutronDhcpAgentDebug}, '']}
|
||||
dhcp_ovs_intergation_bridge_unset: {equals: [{get_param: NeutronDhcpOvsIntegrationBridge}, '']}
|
||||
ovn_enabled: {equals: [{get_param: NeutronMechanismDrivers}, 'ovn']}
|
||||
az_unset: {equals: [{get_param: NeutronDhcpAgentAvailabilityZone}, '']}
|
||||
omit_az_configs: {or: [ovn_enabled, az_unset]}
|
||||
|
||||
resources:
|
||||
|
||||
|
@ -219,6 +237,10 @@ outputs:
|
|||
- dhcp_ovs_intergation_bridge_unset
|
||||
- {}
|
||||
- neutron::agents::dhcp::ovs_integration_bridge: {get_param: NeutronDhcpOvsIntegrationBridge}
|
||||
- if:
|
||||
- omit_az_configs
|
||||
- {}
|
||||
- neutron::agents::dhcp::availability_zone: {get_param: NeutronDhcpAgentAvailabilityZone}
|
||||
service_config_settings:
|
||||
map_merge:
|
||||
- get_attr: [NeutronBase, role_data, service_config_settings]
|
||||
|
|
|
@ -101,6 +101,13 @@ parameters:
|
|||
type: string
|
||||
constraints:
|
||||
- allowed_values: [ '', 'true', 'True', 'TRUE', 'false', 'False', 'FALSE']
|
||||
# NOTE(bogdando): we allow the L3 agent to have AZ configs defined disregard of
|
||||
# the used NeutronMechanismDrivers.
|
||||
NeutronL3AgentAvailabilityZone:
|
||||
description: Availability zone for Neutron L3 agent. If not set,
|
||||
no AZs will be configured for Neutron network services.
|
||||
default: ''
|
||||
type: string
|
||||
|
||||
# DEPRECATED: the following options are deprecated and are currently maintained
|
||||
# for backwards compatibility. They will be removed in the Pike cycle.
|
||||
|
@ -119,6 +126,7 @@ conditions:
|
|||
docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']}
|
||||
service_debug_unset: {equals : [{get_param: NeutronWrapperDebug}, false]}
|
||||
external_network_bridge_empty: {equals : [{get_param: NeutronExternalNetworkBridge}, "''"]}
|
||||
az_unset: {equals: [{get_param: NeutronL3AgentAvailabilityZone}, '']}
|
||||
|
||||
resources:
|
||||
|
||||
|
@ -198,6 +206,10 @@ outputs:
|
|||
- external_network_bridge_empty
|
||||
- {}
|
||||
- neutron::agents::l3::external_network_bridge: {get_param: NeutronExternalNetworkBridge}
|
||||
- if:
|
||||
- az_unset
|
||||
- {}
|
||||
- neutron::agents::l3::availability_zone: {get_param: NeutronL3AgentAvailabilityZone}
|
||||
service_config_settings:
|
||||
map_merge:
|
||||
- get_attr: [NeutronBase, role_data, service_config_settings]
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
resource_registry:
|
||||
OS::TripleO::Services::NeutronAZConfig: ../deployment/nova/neutron-az-config.yaml
|
|
@ -206,7 +206,6 @@ resource_registry:
|
|||
OS::TripleO::Services::NovaScheduler: deployment/nova/nova-scheduler-container-puppet.yaml
|
||||
OS::TripleO::Services::NovaVncProxy: deployment/nova/nova-vnc-proxy-container-puppet.yaml
|
||||
OS::TripleO::Services::Novajoin: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronAZConfig: OS::Heat::None
|
||||
OS::TripleO::Services::NovaAZConfig: OS::Heat::None
|
||||
OS::TripleO::Services::ContainersLogrotateCrond: deployment/logrotate/logrotate-crond-container-puppet.yaml
|
||||
OS::TripleO::Services::OpenShift::Master: OS::Heat::None
|
||||
|
|
|
@ -1,14 +1,24 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
A new service, NeutronAZConfig, is avaialable which can be used to configure
|
||||
Neutron for using avaialabiity zones. By default the service is mapped to
|
||||
None, but can be enabled by including `environments/neutron-az-config.yaml`.
|
||||
``NeutronDefaultAvailabilityZones``, ``NeutronDhcpAgentAvailabilityZone``,
|
||||
``NeutronL3AgentAvailabilityZone``, ``NeutronDhcpAgentsPerNetwork``,
|
||||
``NeutronNetworkSchedulerDriver``, ``NeutronRouterSchedulerDriver`` and
|
||||
``NeutronDhcpLoadType`` parameters can be used to configure various AZ
|
||||
configurations. By default, ``Neutron*AvailabilityZone`` takes the name of
|
||||
the heat stack/deployment plan, and ``NeutronDefaultAvailabilityZones``
|
||||
takes an additional value 'nova'. For details, see
|
||||
`Official Documentaion <https://docs.openstack.org/neutron/latest/admin/config-az.html>`_.
|
||||
Neutron can be configured for using avaialabiity zones (AZs).
|
||||
|
||||
.. note:: OVN does not normally run Neutron agents and also has yet support
|
||||
for AZ-aware routing scheduling. Therefore, no effective AZ configurations
|
||||
can be applied for the network services for the
|
||||
``NeutronMechanismDrivers: ovn`` case.
|
||||
|
||||
`NeutronDefaultAvailabilityZones`, `NeutronDhcpAgentAvailabilityZone`,
|
||||
`NeutronL3AgentAvailabilityZone`, `NeutronDhcpAgentsPerNetwork`,
|
||||
`NeutronNetworkSchedulerDriver`, `NeutronRouterSchedulerDriver` and
|
||||
`NeutronDhcpLoadType` can be used to configure various AZ configurations.
|
||||
|
||||
By default, `Neutron*AvailabilityZone(s)` takes an empty value, which
|
||||
defines no AZs associated with the associated Neutron network service.
|
||||
|
||||
.. note:: The empty AZ name cannot be re-defined via
|
||||
`Neutron*AvailabilityZone(s)` because of the empty value has been
|
||||
reserved for another purposes in t-h-t.
|
||||
|
||||
For details, see
|
||||
`Official Documentaion <https://docs.openstack.org/neutron/latest/admin/config-az.html>`_.
|
||||
|
|
Loading…
Reference in New Issue