Adds OpenDaylight composable service
Introduces environment files for deploying OpenDaylight in two ways: - ODL only managing L2 as an ML2 plugin - ODL managing L2 and L3 DVR, by replacing NeutronL3Agent Two services are added. One to install ODL and configure OVS on the Controllers, and another service to only configure OVS on compute nodes. Paritally-Implements: blueprint opendaylight-integration Depends-On: I666dc0874f1d11a72a62d796f4f6d41f7aa87a3f Change-Id: Ide69e20cbf2ec6151953cb23e51478b770aca17f Signed-off-by: Tim Rozet <trozet@redhat.com>
This commit is contained in:
parent
a4b8e86199
commit
783975c72c
14
environments/neutron-opendaylight-l3.yaml
Normal file
14
environments/neutron-opendaylight-l3.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
# A Heat environment that can be used to deploy OpenDaylight with L3 DVR
|
||||
resource_registry:
|
||||
OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
|
||||
OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
|
||||
OS::TripleO::Services::OpenDaylight: puppet/services/opendaylight.yaml
|
||||
OS::TripleO::Services::OpenDaylightOvs: puppet/services/opendaylight-ovs.yaml
|
||||
OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
|
||||
|
||||
parameter_defaults:
|
||||
EnableOpenDaylightOnController: true
|
||||
NeutronEnableForceMetadata: true
|
||||
NeutronMechanismDrivers: 'opendaylight'
|
||||
NeutronServicePlugins: "networking_odl.l3.l3_odl.OpenDaylightL3RouterPlugin"
|
||||
OpenDaylightEnableL3: "'yes'"
|
11
environments/neutron-opendaylight.yaml
Normal file
11
environments/neutron-opendaylight.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
# A Heat environment that can be used to deploy OpenDaylight
|
||||
resource_registry:
|
||||
OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
|
||||
OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
|
||||
OS::TripleO::Services::OpenDaylight: puppet/services/opendaylight.yaml
|
||||
OS::TripleO::Services::OpenDaylightOvs: puppet/services/opendaylight-ovs.yaml
|
||||
|
||||
parameter_defaults:
|
||||
EnableOpenDaylightOnController: true
|
||||
NeutronEnableForceMetadata: true
|
||||
NeutronMechanismDrivers: 'opendaylight'
|
@ -47,6 +47,7 @@ parameters:
|
||||
ObjectStorageHostnameResolveNetwork: internal_api
|
||||
CephStorageHostnameResolveNetwork: storage
|
||||
PublicNetwork: external
|
||||
OpenDaylightApiNetwork: internal_api
|
||||
description: Mapping of service_name -> network name. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
|
@ -219,6 +219,8 @@ resource_registry:
|
||||
OS::TripleO::Services::NovaIronic: OS::Heat::None
|
||||
OS::TripleO::Services::TripleoPackages: puppet/services/tripleo-packages.yaml
|
||||
OS::TripleO::Services::TripleoFirewall: puppet/services/tripleo-firewall.yaml
|
||||
OS::TripleO::Services::OpenDaylight: OS::Heat::None
|
||||
OS::TripleO::Services::OpenDaylightOvs: OS::Heat::None
|
||||
|
||||
parameter_defaults:
|
||||
EnablePackageInstall: false
|
||||
|
@ -173,6 +173,7 @@ parameters:
|
||||
- OS::TripleO::Services::NovaIronic
|
||||
- OS::TripleO::Services::TripleoPackages
|
||||
- OS::TripleO::Services::TripleoFirewall
|
||||
- OS::TripleO::Services::OpenDaylight
|
||||
description: A list of service resources (configured in the Heat
|
||||
resource_registry) which represent nested stacks
|
||||
for each service that should get installed on the Controllers.
|
||||
@ -196,6 +197,7 @@ parameters:
|
||||
- OS::TripleO::Services::TripleoPackages
|
||||
- OS::TripleO::Services::TripleoFirewall
|
||||
- OS::TripleO::Services::NeutronSriovAgent
|
||||
- OS::TripleO::Services::OpenDaylightOvs
|
||||
description: A list of service resources (configured in the Heat
|
||||
resource_registry) which represent nested stacks
|
||||
for each service that should get installed on the Compute Nodes.
|
||||
@ -596,6 +598,7 @@ resources:
|
||||
sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
|
||||
ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
|
||||
ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
|
||||
opendaylight_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
|
||||
ceph_mon_node_names: {get_attr: [Controller, hostname]}
|
||||
DeployIdentifier: {get_param: DeployIdentifier}
|
||||
UpdateIdentifier: {get_param: UpdateIdentifier}
|
||||
@ -727,6 +730,7 @@ resources:
|
||||
internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
|
||||
sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
|
||||
ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
|
||||
opendaylight_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
|
||||
storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
|
||||
storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
|
||||
|
||||
@ -964,6 +968,9 @@ outputs:
|
||||
NovaInternalVip:
|
||||
description: VIP for Nova API internal endpoint
|
||||
value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
|
||||
OpenDaylightInternalVip:
|
||||
description: VIP for OpenDaylight API internal endpoint
|
||||
value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
|
||||
SaharaInternalVip:
|
||||
description: VIP for Sahara API internal endpoint
|
||||
value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
|
||||
|
@ -56,6 +56,8 @@ parameters:
|
||||
type: comma_delimited_list
|
||||
ceph_mon_node_names:
|
||||
type: comma_delimited_list
|
||||
opendaylight_api_node_ips:
|
||||
type: comma_delimited_list
|
||||
DeployIdentifier:
|
||||
type: string
|
||||
description: >
|
||||
@ -297,7 +299,14 @@ resources:
|
||||
list_join:
|
||||
- "','"
|
||||
- {get_param: ironic_api_node_ips}
|
||||
|
||||
opendaylight_api_node_ips:
|
||||
str_replace:
|
||||
template: "['SERVERS_LIST']"
|
||||
params:
|
||||
SERVERS_LIST:
|
||||
list_join:
|
||||
- "','"
|
||||
- {get_param: opendaylight_api_node_ips}
|
||||
tripleo::profile::base::ceph::ceph_mon_initial_members:
|
||||
list_join:
|
||||
- ','
|
||||
|
47
puppet/services/opendaylight-ovs.yaml
Normal file
47
puppet/services/opendaylight-ovs.yaml
Normal file
@ -0,0 +1,47 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
OpenDaylight OVS Configuration.
|
||||
|
||||
parameters:
|
||||
OpenDaylightPort:
|
||||
default: 8081
|
||||
description: Set opendaylight service port
|
||||
type: number
|
||||
OpenDaylightConnectionProtocol:
|
||||
description: L7 protocol used for REST access
|
||||
type: string
|
||||
default: 'http'
|
||||
OpenDaylightCheckURL:
|
||||
description: URL postfix to verify ODL has finished starting up
|
||||
type: string
|
||||
default: 'restconf/operational/network-topology:network-topology/topology/netvirt:1'
|
||||
OpenDaylightApiVirtualIP:
|
||||
type: string
|
||||
default: ''
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
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
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the OpenDaylight service.
|
||||
value:
|
||||
service_name: opendaylight_ovs
|
||||
config_settings:
|
||||
opendaylight::odl_rest_port: {get_param: OpenDaylightPort}
|
||||
opendaylight_check_url: {get_param: OpenDaylightCheckURL}
|
||||
opendaylight::nb_connection_protocol: {get_param: OpenDaylightConnectionProtocol}
|
||||
step_config: |
|
||||
include tripleo::profile::base::neutron::plugins::ovs::opendaylight
|
81
puppet/services/opendaylight.yaml
Normal file
81
puppet/services/opendaylight.yaml
Normal file
@ -0,0 +1,81 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
OpenDaylight SDN Controller.
|
||||
|
||||
parameters:
|
||||
OpenDaylightPort:
|
||||
default: 8081
|
||||
description: Set opendaylight service port
|
||||
type: number
|
||||
EnableOpenDaylightOnController:
|
||||
default: false
|
||||
description: Whether to install OpenDaylight on control nodes.
|
||||
type: boolean
|
||||
OpenDaylightUsername:
|
||||
default: 'admin'
|
||||
description: The username for the opendaylight server.
|
||||
type: string
|
||||
OpenDaylightPassword:
|
||||
default: 'admin'
|
||||
type: string
|
||||
description: The password for the opendaylight server.
|
||||
hidden: true
|
||||
OpenDaylightEnableL3:
|
||||
description: Knob to enable/disable ODL L3
|
||||
type: string
|
||||
default: 'no'
|
||||
OpenDaylightEnableDHCP:
|
||||
description: Knob to enable/disable ODL DHCP Server
|
||||
type: boolean
|
||||
default: false
|
||||
OpenDaylightFeatures:
|
||||
description: List of features to install with ODL
|
||||
type: comma_delimited_list
|
||||
default: ["odl-netvirt-openstack","odl-netvirt-ui"]
|
||||
OpenDaylightConnectionProtocol:
|
||||
description: L7 protocol used for REST access
|
||||
type: string
|
||||
default: 'http'
|
||||
OpenDaylightCheckURL:
|
||||
description: URL postfix to verify ODL has finished starting up
|
||||
type: string
|
||||
default: 'restconf/operational/network-topology:network-topology/topology/netvirt:1'
|
||||
OpenDaylightApiVirtualIP:
|
||||
type: string
|
||||
default: ''
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
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
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the OpenDaylight service.
|
||||
value:
|
||||
service_name: opendaylight
|
||||
config_settings:
|
||||
opendaylight::odl_rest_port: {get_param: OpenDaylightPort}
|
||||
odl_on_controller: {get_param: EnableOpenDaylightOnController}
|
||||
opendaylight_check_url: {get_param: OpenDaylightCheckURL}
|
||||
opendaylight::username: {get_param: OpenDaylightUsername}
|
||||
opendaylight::password: {get_param: OpenDaylightPassword}
|
||||
opendaylight::enable_l3: {get_param: OpenDaylightEnableL3}
|
||||
opendaylight::extra_features: {get_param: OpenDaylightFeatures}
|
||||
opendaylight::enable_dhcp: {get_param: OpenDaylightEnableDHCP}
|
||||
opendaylight::nb_connection_protocol: {get_param: OpenDaylightConnectionProtocol}
|
||||
opendaylight::odl_bind_ip: {get_param: [ServiceNetMap, OpenDaylightApiNetwork]}
|
||||
tripleo::haproxy::opendaylight: true
|
||||
step_config: |
|
||||
include tripleo::profile::base::neutron::opendaylight
|
||||
include tripleo::profile::base::neutron::plugins::ovs::opendaylight
|
@ -39,6 +39,7 @@ resources:
|
||||
storage_virtual_ip: {get_input: storage_virtual_ip}
|
||||
storage_mgmt_virtual_ip: {get_input: storage_mgmt_virtual_ip}
|
||||
ironic_api_vip: {get_input: ironic_api_vip}
|
||||
opendaylight_api_vip: {get_input: opendaylight_api_vip}
|
||||
# public_virtual_ip and controller_virtual_ip are needed in
|
||||
# both HAproxy & keepalived.
|
||||
tripleo::haproxy::public_virtual_ip: {get_input: public_virtual_ip}
|
||||
|
Loading…
Reference in New Issue
Block a user