OpenContrail heat templates

Deploy a TripleO overcloud with OpenContrail Vrouter plugin configured
to interact with an existing OpenContrail Server Manager.

OpenContrail is an Apache 2.0-licensed project that is built using
standards-based protocols and provides all the necessary components for
network virtualization–SDN controller, virtual router, analytics engine,
and published northbound APIs. It has an extensive REST API to configure
and gather operational and analytics data from the system.

Co-Authored-By: Jiri Stransky <jistr@redhat.com>
Change-Id: I699a7c4ea09d024fe4d70c6a507c524f0a7aafd5
This commit is contained in:
Nicolas Hicher 2016-01-21 16:21:23 +01:00
parent 5720819516
commit fd922970e8
8 changed files with 149 additions and 2 deletions

View File

@ -0,0 +1,22 @@
# A Heat environment file which can be used to enable OpenContrail
# extensions, configured via puppet
resource_registry:
OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-opencontrail.yaml
OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/compute/neutron-opencontrail.yaml
parameter_defaults:
NeutronCorePlugin: neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2
NeutronServicePlugins: neutron_plugin_contrail.plugins.opencontrail.loadbalancer.plugin.LoadBalancerPlugin
NeutronEnableDHCPAgent: false
NeutronEnableL3Agent: false
NeutronEnableMetadataAgent: false
NeutronEnableOVSAgent: false
NeutronEnableTunnelling: false
# required params:
#ContrailApiServerIp:
#ContrailExtensions: ''
# optional params
# ContrailApiServerPort: 8082
# ContrailMultiTenancy: false

View File

@ -437,6 +437,7 @@ resources:
- cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
- nova_nuage_data # Optionally provided by ComputeExtraConfigPre
- midonet_data # Optionally provided by AllNodesExtraConfig
- neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
datafiles:
compute_extraconfig:
mapped_data: {get_param: NovaComputeExtraConfig}

View File

@ -1207,6 +1207,7 @@ resources:
- cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
- neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
- midonet_data #Optionally provided by AllNodesExtraConfig
- neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
datafiles:
controller_extraconfig:
mapped_data: {get_param: ControllerExtraConfig}

View File

@ -0,0 +1,47 @@
heat_template_version: 2015-04-30
description: Compute node hieradata for Neutron OpenContrail configuration
parameters:
server:
description: ID of the compute node to apply this config to
type: string
ContrailApiServerIp:
description: IP address of the OpenContrail API server
type: string
ContrailApiServerPort:
description: Port of the OpenContrail API
type: string
default: 8082
resources:
ComputeContrailConfig:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
hiera:
datafiles:
neutron_opencontrail_data:
mapped_data:
nova::network::neutron::network_api_class: nova.network.neutronv2.api.API
contrail::vrouter::provision_vrouter::api_address: {get_input: contrail_api_server_ip}
contrail::vrouter::provision_vrouter::api_port: {get_input: contrail_api_server_port}
contrail::vrouter::provision_vrouter::keystone_admin_user: admin
contrail::vrouter::provision_vrouter::keystone_admin_tenant_name: admin
contrail::vrouter::provision_vrouter::keystone_admin_password: '"%{::admin_password}"'
ComputeContrailDeployment:
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: ComputeContrailConfig}
server: {get_param: server}
input_values:
contrail_api_server_ip: {get_param: ContrailApiServerIp}
contrail_api_server_port: {get_param: ContrailApiServerPort}
outputs:
deploy_stdout:
description: Output of the extra hiera data deployment
value: {get_attr: [ComputeContrailDeployment, deploy_stdout]}

View File

@ -0,0 +1,62 @@
heat_template_version: 2015-04-30
description: Controller hieradata for Neutron OpenContrail configuration
parameters:
server:
description: ID of the controller node to apply this config to
type: string
ContrailApiServerIp:
description: IP address of the OpenContrail API server
type: string
ContrailApiServerPort:
description: Port of the OpenContrail API
type: string
default: 8082
ContrailMultiTenancy:
description: Whether to enable multi tenancy
type: boolean
default: false
ContrailExtensions:
description: List of OpenContrail extensions to be enabled
type: comma_delimited_list
default: ''
resources:
ControllerContrailConfig:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
hiera:
datafiles:
neutron_opencontrail_data:
mapped_data:
neutron::api_extensions_path: /usr/lib/python2.7/site-packages/neutron_plugin_contrail/extensions
neutron::plugins::opencontrail::api_server_ip: {get_input: contrail_api_server_ip}
neutron::plugins::opencontrail::api_server_port: {get_input: contrail_api_server_port}
neutron::plugins::opencontrail::multi_tenancy: {get_input: contrail_multi_tenancy}
neutron::plugins::opencontrail::contrail_extensions: {get_input: contrail_extensions}
neutron::plugins::opencontrail::keystone_auth_url: '"%{hiera(''keystone_auth_uri'')}"'
neutron::plugins::opencontrail::keystone_admin_user: admin
neutron::plugins::opencontrail::keystone_admin_tenant_name: admin
neutron::plugins::opencontrail::keystone_admin_password: '"%{hiera(''admin_password'')}"'
neutron::plugins::opencontrail::keystone_admin_token: '"%{hiera(''keystone::admin_token'')}"'
ControllerContrailDeployment:
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: ControllerContrailConfig}
server: {get_param: server}
input_values:
contrail_api_server_ip: {get_param: ContrailApiServerIp}
contrail_api_server_port: {get_param: ContrailApiServerPort}
contrail_multi_tenancy: {get_param: ContrailMultiTenancy}
contrail_extensions: {get_param: ContrailExtensions}
outputs:
deploy_stdout:
description: Output of the extra hiera data deployment
value: {get_attr: [ControllerContrailDeployment, deploy_stdout]}

View File

@ -106,6 +106,15 @@ elsif hiera('neutron::core_plugin') == 'midonet.neutron.plugin_v1.MidonetPluginV
cassandra_seeds => $cassandra_node_ips
}
}
elsif hiera('neutron::core_plugin') == 'neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2' {
include ::contrail::vrouter
# NOTE: it's not possible to use this class without a functional
# contrail controller up and running
#class {'::contrail::vrouter::provision_vrouter':
# require => Class['contrail::vrouter'],
#}
}
else {
include ::neutron::plugins::ml2

View File

@ -284,11 +284,13 @@ if hiera('step') >= 3 {
include ::neutron::server
include ::neutron::server::notifications
# If the value of core plugin is set to 'nuage',
# include nuage core plugin, and it does not
# If the value of core plugin is set to 'nuage' or 'opencontrail',
# include nuage or opencontrail core plugins, and it does not
# need the l3, dhcp and metadata agents
if hiera('neutron::core_plugin') == 'neutron.plugins.nuage.plugin.NuagePlugin' {
include ::neutron::plugins::nuage
} elsif hiera('neutron::core_plugin') == 'neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2' {
include ::neutron::plugins::opencontrail
} else {
include ::neutron::agents::l3
include ::neutron::agents::dhcp

View File

@ -654,6 +654,9 @@ if hiera('step') >= 3 {
if hiera('neutron::core_plugin') == 'neutron.plugins.nuage.plugin.NuagePlugin' {
include ::neutron::plugins::nuage
}
if hiera('neutron::core_plugin') == 'neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2' {
include ::neutron::plugins::opencontrail
}
if hiera('neutron::core_plugin') == 'midonet.neutron.plugin_v1.MidonetPluginV2' {
class {'::neutron::plugins::midonet':
midonet_api_ip => $public_vip,