183541d389
Create the neutron::plugins::opencontrail class that allows one to configure neutron to work with opencontrail. The parameters have been taken from here[1] [1] https://github.com/Juniper/contrail-neutron-plugin/blob/master/etc/neutron/plugins/opencontrail/ContrailPlugin.ini Change-Id: I080c4aed23ebde320e67c98c44171b18bf2758ad
121 lines
3.8 KiB
Puppet
121 lines
3.8 KiB
Puppet
# This class installs and configures Opencontrail Neutron Plugin.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*api_server_ip*]
|
|
# IP address of the API Server
|
|
# Defaults to undef
|
|
#
|
|
# [*api_server_port*]
|
|
# Port of the API Server.
|
|
# Defaults to undef
|
|
#
|
|
# [*multi_tenancy*]
|
|
# Whether to enable multi-tenancy
|
|
# Default to undef
|
|
#
|
|
# [*contrail_extensions*]
|
|
# Array of OpenContrail extensions to be supported
|
|
# Defaults to undef
|
|
# Example:
|
|
#
|
|
# class {'neutron::plugins::opencontrail' :
|
|
# contrail_extensions => ['ipam:neutron_plugin_contrail.plugins.opencontrail.contrail_plugin_ipam.NeutronPluginContrailIpam']
|
|
# }
|
|
#
|
|
# [*keystone_auth_url*]
|
|
# Url of the keystone auth server
|
|
# Defaults to undef
|
|
#
|
|
# [*keystone_admin_user*]
|
|
# Admin user name
|
|
# Defaults to undef
|
|
#
|
|
# [*keystone_admin_tenant_name*]
|
|
# Admin_tenant_name
|
|
# Defaults to undef
|
|
#
|
|
# [*keystone_admin_password*]
|
|
# Admin password
|
|
# Defaults to undef
|
|
#
|
|
# [*keystone_admin_token*]
|
|
# Admin token
|
|
# Defaults to undef
|
|
#
|
|
class neutron::plugins::opencontrail (
|
|
$api_server_ip = undef,
|
|
$api_server_port = undef,
|
|
$multi_tenancy = undef,
|
|
$contrail_extensions = undef,
|
|
$keystone_auth_url = undef,
|
|
$keystone_admin_user = undef,
|
|
$keystone_admin_tenant_name = undef,
|
|
$keystone_admin_password = undef,
|
|
$keystone_admin_token = undef,
|
|
$package_ensure = 'present',
|
|
) {
|
|
|
|
include ::neutron::params
|
|
|
|
validate_array($contrail_extensions)
|
|
|
|
package { 'neutron-plugin-contrail':
|
|
ensure => $package_ensure,
|
|
name => $::neutron::params::opencontrail_plugin_package,
|
|
tag => 'openstack',
|
|
}
|
|
|
|
# Although this manifest does not install opencontrail plugin package because it
|
|
# is not available in common distro repos, this statement forces you to
|
|
# have an orchestrator/wrapper manifest that does that job.
|
|
Package[$::neutron::params::opencontrail_plugin_package] -> Neutron_plugin_opencontrail<||>
|
|
Neutron_plugin_opencontrail<||> ~> Service['neutron-server']
|
|
|
|
ensure_resource('file', '/etc/neutron/plugins/opencontrail', {
|
|
ensure => directory,
|
|
owner => 'root',
|
|
group => 'neutron',
|
|
mode => '0640'}
|
|
)
|
|
|
|
# Ensure the neutron package is installed before config is set
|
|
# under both RHEL and Ubuntu
|
|
if ($::neutron::params::server_package) {
|
|
Package['neutron-server'] -> Neutron_plugin_opencontrail<||>
|
|
} else {
|
|
Package['neutron'] -> Neutron_plugin_opencontrail<||>
|
|
}
|
|
|
|
if $::osfamily == 'Debian' {
|
|
file_line { '/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG':
|
|
path => '/etc/default/neutron-server',
|
|
match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
|
|
line => "NEUTRON_PLUGIN_CONFIG=${::neutron::params::opencontrail_config_file}",
|
|
require => [ Package['neutron-server'], Package[$::neutron::params::opencontrail_plugin_package] ],
|
|
notify => Service['neutron-server'],
|
|
}
|
|
}
|
|
|
|
if $::osfamily == 'Redhat' {
|
|
file { '/etc/neutron/plugin.ini':
|
|
ensure => link,
|
|
target => $::neutron::params::opencontrail_config_file,
|
|
require => Package[$::neutron::params::opencontrail_plugin_package],
|
|
}
|
|
}
|
|
|
|
neutron_plugin_opencontrail {
|
|
'APISERVER/api_server_ip': value => $api_server_ip;
|
|
'APISERVER/api_server_port': value => $api_server_port;
|
|
'APISERVER/multi_tenancy': value => $multi_tenancy;
|
|
'APISERVER/contrail_extensions': value => join($contrail_extensions, ',');
|
|
'KEYSTONE/auth_url': value => $keystone_auth_url;
|
|
'KEYSTONE/admin_user' : value => $keystone_admin_user;
|
|
'KEYSTONE/admin_tenant_name': value => $keystone_admin_tenant_name;
|
|
'KEYSTONE/admin_password': value => $keystone_admin_password, secret =>true;
|
|
'KEYSTONE/admin_token': value => $keystone_admin_token, secret =>true;
|
|
}
|
|
|
|
}
|