Merge "Rework neutron AZ configs considering OVN"
This commit is contained in:
commit
d435c789b4
|
@ -112,6 +112,33 @@ parameters:
|
||||||
default: '500'
|
default: '500'
|
||||||
type: string
|
type: string
|
||||||
description: Number of ports allowed per tenant, and minus means unlimited.
|
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
|
# DEPRECATED: the following options are deprecated and are currently maintained
|
||||||
# for backwards compatibility. They will be removed in the Ocata cycle.
|
# for backwards compatibility. They will be removed in the Ocata cycle.
|
||||||
NeutronL3HA:
|
NeutronL3HA:
|
||||||
|
@ -142,6 +169,9 @@ conditions:
|
||||||
neutron_ovs_int_br_unset: {equals : [{get_param: NeutronOvsIntegrationBridge}, '']}
|
neutron_ovs_int_br_unset: {equals : [{get_param: NeutronOvsIntegrationBridge}, '']}
|
||||||
internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
|
internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
|
||||||
neutron_dvr_unset: {equals : [{get_param: NeutronEnableDVR}, '']}
|
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:
|
resources:
|
||||||
|
|
||||||
|
@ -279,6 +309,18 @@ outputs:
|
||||||
- neutron_ovs_int_br_unset
|
- neutron_ovs_int_br_unset
|
||||||
- {}
|
- {}
|
||||||
- neutron::server::ovs_integration_bridge: {get_param: NeutronOvsIntegrationBridge}
|
- 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:
|
service_config_settings:
|
||||||
fluentd:
|
fluentd:
|
||||||
tripleo_fluentd_groups_neutron_api:
|
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
|
default: false
|
||||||
description: Neutron DHCP agent to use broadcast in DHCP replies
|
description: Neutron DHCP agent to use broadcast in DHCP replies
|
||||||
type: boolean
|
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:
|
conditions:
|
||||||
|
|
||||||
|
@ -131,6 +146,9 @@ conditions:
|
||||||
service_wrapper_debug_unset: {equals : [{get_param: NeutronWrapperDebug}, false]}
|
service_wrapper_debug_unset: {equals : [{get_param: NeutronWrapperDebug}, false]}
|
||||||
service_debug_unset: {equals: [{get_param: NeutronDhcpAgentDebug}, '']}
|
service_debug_unset: {equals: [{get_param: NeutronDhcpAgentDebug}, '']}
|
||||||
dhcp_ovs_intergation_bridge_unset: {equals: [{get_param: NeutronDhcpOvsIntegrationBridge}, '']}
|
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:
|
resources:
|
||||||
|
|
||||||
|
@ -219,6 +237,10 @@ outputs:
|
||||||
- dhcp_ovs_intergation_bridge_unset
|
- dhcp_ovs_intergation_bridge_unset
|
||||||
- {}
|
- {}
|
||||||
- neutron::agents::dhcp::ovs_integration_bridge: {get_param: NeutronDhcpOvsIntegrationBridge}
|
- neutron::agents::dhcp::ovs_integration_bridge: {get_param: NeutronDhcpOvsIntegrationBridge}
|
||||||
|
- if:
|
||||||
|
- omit_az_configs
|
||||||
|
- {}
|
||||||
|
- neutron::agents::dhcp::availability_zone: {get_param: NeutronDhcpAgentAvailabilityZone}
|
||||||
service_config_settings:
|
service_config_settings:
|
||||||
map_merge:
|
map_merge:
|
||||||
- get_attr: [NeutronBase, role_data, service_config_settings]
|
- get_attr: [NeutronBase, role_data, service_config_settings]
|
||||||
|
|
|
@ -101,6 +101,13 @@ parameters:
|
||||||
type: string
|
type: string
|
||||||
constraints:
|
constraints:
|
||||||
- allowed_values: [ '', 'true', 'True', 'TRUE', 'false', 'False', 'FALSE']
|
- 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
|
# DEPRECATED: the following options are deprecated and are currently maintained
|
||||||
# for backwards compatibility. They will be removed in the Pike cycle.
|
# for backwards compatibility. They will be removed in the Pike cycle.
|
||||||
|
@ -119,6 +126,7 @@ conditions:
|
||||||
docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']}
|
docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']}
|
||||||
service_debug_unset: {equals : [{get_param: NeutronWrapperDebug}, false]}
|
service_debug_unset: {equals : [{get_param: NeutronWrapperDebug}, false]}
|
||||||
external_network_bridge_empty: {equals : [{get_param: NeutronExternalNetworkBridge}, "''"]}
|
external_network_bridge_empty: {equals : [{get_param: NeutronExternalNetworkBridge}, "''"]}
|
||||||
|
az_unset: {equals: [{get_param: NeutronL3AgentAvailabilityZone}, '']}
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
|
||||||
|
@ -198,6 +206,10 @@ outputs:
|
||||||
- external_network_bridge_empty
|
- external_network_bridge_empty
|
||||||
- {}
|
- {}
|
||||||
- neutron::agents::l3::external_network_bridge: {get_param: NeutronExternalNetworkBridge}
|
- neutron::agents::l3::external_network_bridge: {get_param: NeutronExternalNetworkBridge}
|
||||||
|
- if:
|
||||||
|
- az_unset
|
||||||
|
- {}
|
||||||
|
- neutron::agents::l3::availability_zone: {get_param: NeutronL3AgentAvailabilityZone}
|
||||||
service_config_settings:
|
service_config_settings:
|
||||||
map_merge:
|
map_merge:
|
||||||
- get_attr: [NeutronBase, role_data, service_config_settings]
|
- 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::NovaScheduler: deployment/nova/nova-scheduler-container-puppet.yaml
|
||||||
OS::TripleO::Services::NovaVncProxy: deployment/nova/nova-vnc-proxy-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::Novajoin: OS::Heat::None
|
||||||
OS::TripleO::Services::NeutronAZConfig: OS::Heat::None
|
|
||||||
OS::TripleO::Services::NovaAZConfig: OS::Heat::None
|
OS::TripleO::Services::NovaAZConfig: OS::Heat::None
|
||||||
OS::TripleO::Services::ContainersLogrotateCrond: deployment/logrotate/logrotate-crond-container-puppet.yaml
|
OS::TripleO::Services::ContainersLogrotateCrond: deployment/logrotate/logrotate-crond-container-puppet.yaml
|
||||||
OS::TripleO::Services::OpenShift::Master: OS::Heat::None
|
OS::TripleO::Services::OpenShift::Master: OS::Heat::None
|
||||||
|
|
|
@ -1,14 +1,24 @@
|
||||||
---
|
---
|
||||||
features:
|
features:
|
||||||
- |
|
- |
|
||||||
A new service, NeutronAZConfig, is avaialable which can be used to configure
|
Neutron can be configured for using avaialabiity zones (AZs).
|
||||||
Neutron for using avaialabiity zones. By default the service is mapped to
|
|
||||||
None, but can be enabled by including `environments/neutron-az-config.yaml`.
|
.. note:: OVN does not normally run Neutron agents and also has yet support
|
||||||
``NeutronDefaultAvailabilityZones``, ``NeutronDhcpAgentAvailabilityZone``,
|
for AZ-aware routing scheduling. Therefore, no effective AZ configurations
|
||||||
``NeutronL3AgentAvailabilityZone``, ``NeutronDhcpAgentsPerNetwork``,
|
can be applied for the network services for the
|
||||||
``NeutronNetworkSchedulerDriver``, ``NeutronRouterSchedulerDriver`` and
|
``NeutronMechanismDrivers: ovn`` case.
|
||||||
``NeutronDhcpLoadType`` parameters can be used to configure various AZ
|
|
||||||
configurations. By default, ``Neutron*AvailabilityZone`` takes the name of
|
`NeutronDefaultAvailabilityZones`, `NeutronDhcpAgentAvailabilityZone`,
|
||||||
the heat stack/deployment plan, and ``NeutronDefaultAvailabilityZones``
|
`NeutronL3AgentAvailabilityZone`, `NeutronDhcpAgentsPerNetwork`,
|
||||||
takes an additional value 'nova'. For details, see
|
`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>`_.
|
`Official Documentaion <https://docs.openstack.org/neutron/latest/admin/config-az.html>`_.
|
||||||
|
|
Loading…
Reference in New Issue