Clayton O'Neill 8b2319e210 Add hooks for external install & svc management
This adds defined anchor points for external modules to hook into the
software install, config and service dependency chain.  This allows
external modules to manage software installation (virtualenv,
containers, etc) and service management (pacemaker) without needing rely
on resources that may change or be renamed.

Change-Id: Idb1332dd498bb3065720f2ccaf68e6b0e9fa80c3
2016-06-09 09:55:27 -04:00

192 lines
6.1 KiB
Puppet

# This class installs and configures Plumgrid Neutron Plugin.
#
# === Parameters
#
# [*director_server*]
# IP address of the PLUMgrid Director Server
# Defaults to 127.0.0.1
#
# [*director_server_port*]
# Port of the PLUMgrid Director Server.
# Defaults to 443
#
# [*username*]
# PLUMgrid platform username
# Defaults to $::os_service_default
#
# [*password*]
# PLUMgrid platform password
# Defaults to $::os_service_default
#
# [*servertimeout*]
# Request timeout duration (seconds) to PLUMgrid paltform
# Defaults to 99
#
# [*connection*]
# Database connection
# Defaults to http://127.0.0.1:35357/v2.0
#
# [*admin_password*]
# Keystone admin password
# Defaults to $::os_service_default
#
# [*controller_priv_host*]
# Controller private host IP
# Defaults to 127.0.0.1
#
# [*auth_protocol*]
# Authorization protocol
# Defaults to http
#
# [*identity_version*]
# Keystone identity version
# Defaults to v3
#
# [*user_domain_name*]
# Keystone user domain name
# Defaults to Default
#
# [*nova_metadata_ip*]
# Nova metadata IP
# Defaults to 127.0.0.1
#
# [*nova_metadata_port*]
# Nova metadata port
# Defaults to 8775
#
# [*nova_metadata_subnet*]
# Nova metadata subnet
# Defaults to 127.0.0.1/24
#
# [*metadata_proxy_shared_secret*]
# Neutron metadata shared secret key
# Defaults to $::os_service_default
#
# [*connector_type*]
# Neutron network connector type
# Defaults to distributed
#
# [*l2gateway_vendor*]
# L2 gateway vendor
# Defaults to $::os_service_default
#
# [*l2gateway_sw_username*]
# L2 gateway username
# Defaults to $::os_service_default
#
# [*l2gateway_sw_password*]
# L2 gateway password
# Defaults to $::os_service_default
#
# [*plumlib_package_ensure*]
# (optional) Ensure state for plumlib package.
# Defaults to 'present'.
#
# [*package_ensure*]
# (optional) Ensure state for plugin package.
# Defaults to 'present'.
#
# [*purge_config*]
# (optional) Whether to set only the specified config options
# in the plumgrid config.
# Defaults to false.
#
class neutron::plugins::plumgrid (
$director_server = '127.0.0.1',
$director_server_port = '443',
$username = $::os_service_default,
$password = $::os_service_default,
$servertimeout = '99',
$connection = 'http://127.0.0.1:35357/v2.0',
$admin_password = $::os_service_default,
$controller_priv_host = '127.0.0.1',
$auth_protocol = 'http',
$identity_version = 'v3',
$user_domain_name = 'Default',
$nova_metadata_ip = '127.0.0.1',
$nova_metadata_port = '8775',
$nova_metadata_subnet = '127.0.0.1/24',
$metadata_proxy_shared_secret = $::os_service_default,
$connector_type = 'distributed',
$l2gateway_vendor = $::os_service_default,
$l2gateway_sw_username = $::os_service_default,
$l2gateway_sw_password = $::os_service_default,
$plumlib_package_ensure = 'present',
$package_ensure = 'present',
$purge_config = false,
) {
include ::neutron::deps
include ::neutron::params
ensure_resource('file', '/etc/neutron/plugins/plumgrid', {
ensure => directory,
owner => 'root',
group => 'neutron',
mode => '0640'}
)
package { 'neutron-plugin-plumgrid':
ensure => $package_ensure,
name => $::neutron::params::plumgrid_plugin_package
}
package { 'neutron-plumlib-plumgrid':
ensure => $plumlib_package_ensure,
name => $::neutron::params::plumgrid_pythonlib_package
}
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::plumgrid_config_file}",
tag => 'neutron-file-line',
}
}
if $::osfamily == 'Redhat' {
file { '/etc/neutron/plugin.ini':
ensure => link,
target => $::neutron::params::plumgrid_config_file,
tag => 'neutron-config-file',
}
}
resources { 'neutron_plugin_plumgrid':
purge => $purge_config,
}
resources { 'neutron_plumlib_plumgrid':
purge => $purge_config,
}
neutron_plugin_plumgrid {
'PLUMgridDirector/director_server': value => $director_server;
'PLUMgridDirector/director_server_port': value => $director_server_port;
'PLUMgridDirector/username': value => $username;
'PLUMgridDirector/password': value => $password, secret =>true;
'PLUMgridDirector/servertimeout': value => $servertimeout;
'database/connection': value => $connection;
}
neutron_plumlib_plumgrid {
'keystone_authtoken/admin_user' : value => 'admin';
'keystone_authtoken/admin_password': value => $admin_password, secret =>true;
'keystone_authtoken/auth_uri': value => "${auth_protocol}://${controller_priv_host}:35357/${identity_version}";
'keystone_authtoken/admin_tenant_name': value => 'admin';
'keystone_authtoken/identity_version': value => $identity_version;
'keystone_authtoken/user_domain_name': value => $user_domain_name;
'PLUMgridMetadata/enable_pg_metadata' : value => 'True';
'PLUMgridMetadata/metadata_mode': value => 'local';
'PLUMgridMetadata/nova_metadata_ip': value => $nova_metadata_ip;
'PLUMgridMetadata/nova_metadata_port': value => $nova_metadata_port;
'PLUMgridMetadata/nova_metadata_subnet': value => $nova_metadata_subnet;
'PLUMgridMetadata/metadata_proxy_shared_secret': value => $metadata_proxy_shared_secret;
'ConnectorType/connector_type': value => $connector_type;
'l2gateway/vendor': value => $l2gateway_vendor;
'l2gateway/sw_username': value => $l2gateway_sw_username;
'l2gateway/sw_password': value => $l2gateway_sw_password;
}
}