puppet-neutron/manifests/plugins/opencontrail.pp
Yanis Guenane 183541d389 Opencontrail: Create neutron::plugins::opencontrail
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
2015-06-23 08:22:45 +02:00

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;
}
}