diff --git a/capabilities-map.yaml b/capabilities-map.yaml index 1fe7790dc3..d0ec0152a5 100644 --- a/capabilities-map.yaml +++ b/capabilities-map.yaml @@ -305,6 +305,11 @@ topics: description: Enables Neutron BGPVPN Service Plugin requires: - overcloud-resource-registry-puppet.yaml + - file: environments/services/neutron-lbaasv2.yaml + title: Neutron LBaaSv2 Service Plugin + description: Enables Neutron LBaaSv2 Service Plugin and Agent + requires: + - overcloud-resource-registry-puppet.yaml - file: environments/neutron-ml2-bigswitch.yaml title: BigSwitch Extensions description: > diff --git a/environments/services/neutron-lbaasv2.yaml b/environments/services/neutron-lbaasv2.yaml new file mode 100644 index 0000000000..9dee74ea6f --- /dev/null +++ b/environments/services/neutron-lbaasv2.yaml @@ -0,0 +1,17 @@ +# A Heat environment file that can be used to deploy Neutron LBaaSv2 service +# +# Currently there are only two interface drivers for Neutron LBaaSv2 +# The default option is the standard OVS driver the other option is to be used +# when linux bridges are used instead of OVS +# In order to enable other backend, replace the content of NeutronLbaasInterfaceDriver +# +# - OVS: neutron.agent.linux.interface.OVSInterfaceDriver +# - LinuxBridges: neutron.agent.linux.interface.BridgeInterfaceDriver +resource_registry: + OS::TripleO::Services::NeutronLbaas: ../puppet/services/neutron-lbaas.yaml + +parameter_defaults: + NeutronLbaasInterfaceDriver: "neutron.agent.linux.interface.OVSInterfaceDriver" + NeutronLbaasDeviceDriver: "neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver" + NeutronServiceProviders: ['LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default'] + diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index 51cc85d843..a579ee94b3 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -138,6 +138,7 @@ resource_registry: OS::TripleO::Services::NeutronL2gwApi: OS::Heat::None OS::TripleO::Services::NeutronL3Agent: puppet/services/neutron-l3.yaml OS::TripleO::Services::NeutronL2gwAgent: OS::Heat::None + OS::TripleO::Services::NeutronLbaasv2Agent: OS::Heat::None OS::TripleO::Services::NeutronMetadataAgent: puppet/services/neutron-metadata.yaml # FIXME(shardy) the duplicate NeutronServer line can be removed when we've updated # the multinode job ControllerServices after this patch merges diff --git a/puppet/services/neutron-lbaas.yaml b/puppet/services/neutron-lbaas.yaml new file mode 100644 index 0000000000..5529db954f --- /dev/null +++ b/puppet/services/neutron-lbaas.yaml @@ -0,0 +1,70 @@ +heat_template_version: pike + +description: > + Neutron LBaaS service configured with Puppet + +parameters: + 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 + NeutronLbaasInterfaceDriver: + default: 'neutron.agent.linux.interface.OVSInterfaceDriver' + type: string + NeutronLbaasDeviceDriver: + default: 'neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver' + type: string + NeutronServiceProviders: + default: 'LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default' + description: Global list of service providers used by neutron. This + list should be passed in to ensure all service + providers desired by the user are included. The + provided default value only set the provider for the LBaaSv2 + subsystem.This is currently incompatible with enabling + octavia-api as one service or the other will break because the defaults are different. + type: comma_delimited_list + +resources: + + NeutronBase: + type: ./neutron-base.yaml + properties: + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + EndpointMap: {get_param: EndpointMap} + RoleName: {get_param: RoleName} + RoleParameters: {get_param: RoleParameters} + +outputs: + role_data: + description: Role data for the Neutron LBaaS role. + value: + service_name: neutron_lbaas + config_settings: + map_merge: + - get_attr: [NeutronBase, role_data, config_settings] + - neutron::agents::lbaas::interface_driver: {get_param: NeutronLbaasInterfaceDriver} + neutron::agents::lbaas::device_driver: {get_param: NeutronLbaasDeviceDriver} + step_config: | + include ::tripleo::profile::base::neutron::lbaas + service_config_settings: + neutron_api: + neutron::server::service_providers: {get_param: NeutronServiceProviders} diff --git a/releasenotes/notes/enable-neutron-lbaas-integration-b72126f2c7e71cee.yaml b/releasenotes/notes/enable-neutron-lbaas-integration-b72126f2c7e71cee.yaml new file mode 100644 index 0000000000..490dc2443f --- /dev/null +++ b/releasenotes/notes/enable-neutron-lbaas-integration-b72126f2c7e71cee.yaml @@ -0,0 +1,4 @@ +--- +features: + - Allows the configuration of the Neutron LBaaS + agent. \ No newline at end of file diff --git a/roles/Controller.yaml b/roles/Controller.yaml index e156396d4a..40e51aa88a 100644 --- a/roles/Controller.yaml +++ b/roles/Controller.yaml @@ -85,6 +85,7 @@ - OS::TripleO::Services::NeutronL2gwAgent - OS::TripleO::Services::NeutronL2gwApi - OS::TripleO::Services::NeutronL3Agent + - OS::TripleO::Services::NeutronLbaasv2Agent - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronML2FujitsuCfab diff --git a/roles/Networker.yaml b/roles/Networker.yaml index a28eaa6304..32152cbaab 100644 --- a/roles/Networker.yaml +++ b/roles/Networker.yaml @@ -22,6 +22,7 @@ - OS::TripleO::Services::NeutronL2gwAgent - OS::TripleO::Services::NeutronL2gwApi - OS::TripleO::Services::NeutronL3Agent + - OS::TripleO::Services::NeutronLbaasv2Agent - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronML2FujitsuCfab - OS::TripleO::Services::NeutronML2FujitsuFossw diff --git a/roles_data.yaml b/roles_data.yaml index d84b63783a..7bb87c2e4e 100644 --- a/roles_data.yaml +++ b/roles_data.yaml @@ -88,6 +88,7 @@ - OS::TripleO::Services::NeutronL2gwAgent - OS::TripleO::Services::NeutronL2gwApi - OS::TripleO::Services::NeutronL3Agent + - OS::TripleO::Services::NeutronLbaasv2Agent - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronML2FujitsuCfab