d02d2dd124
... because the latest lint no longer allows usage of legacy facts and top scope fact. Change-Id: I3f17eb12408f4b88bf72f4de31cdf8f8fa008c2a
163 lines
4.6 KiB
Puppet
163 lines
4.6 KiB
Puppet
# Installs & configure the octavia controller worker service
|
|
#
|
|
# == Parameters
|
|
#
|
|
# [*enabled*]
|
|
# (optional) Should the service be enabled.
|
|
# Defaults to true
|
|
#
|
|
# [*manage_service*]
|
|
# (optional) Whether the service should be managed by Puppet.
|
|
# Defaults to true.
|
|
#
|
|
# [*package_ensure*]
|
|
# (optional) ensure state for package.
|
|
# Defaults to 'present'
|
|
#
|
|
# [*workers*]
|
|
# (optional) Number of worker processes.
|
|
# Defaults to $facts['os_workers']
|
|
#
|
|
# [*manage_nova_flavor*]
|
|
# (optional) Whether or not manage Nova flavor for the Amphora.
|
|
# Defaults to true.
|
|
#
|
|
# [*nova_flavor_config*]
|
|
# (optional) Nova flavor config hash.
|
|
# Should be an hash.
|
|
# Example:
|
|
# $nova_flavor_config = { 'ram' => '2048' }
|
|
# Possible options are documented in puppet-nova nova_flavor type.
|
|
# Defaults to {}.
|
|
#
|
|
# [*key_path*]
|
|
# (optional) full path to the private key for the amphora SSH key
|
|
# Defaults to '/etc/octavia/.ssh/octavia_ssh_key'
|
|
#
|
|
# [*manage_keygen*]
|
|
# (optional) Whether or not create OpenStack keypair for communicating with
|
|
# amphora.
|
|
# Defaults to false
|
|
#
|
|
# [*ssh_key_type*]
|
|
# (optional) Type of ssh key to create.
|
|
# Defaults to 'rsa'
|
|
#
|
|
# [*ssh_key_bits*]
|
|
# (optional) Number of bits in ssh key.
|
|
# Defaults to 2048
|
|
#
|
|
# [*amp_project_name*]
|
|
# (optional) Set the project to be used for creating load balancer instances.
|
|
# Defaults to 'services'
|
|
#
|
|
class octavia::worker (
|
|
$manage_service = true,
|
|
$enabled = true,
|
|
$package_ensure = 'present',
|
|
$workers = $facts['os_workers'],
|
|
$manage_nova_flavor = true,
|
|
$nova_flavor_config = {},
|
|
$key_path = '/etc/octavia/.ssh/octavia_ssh_key',
|
|
$manage_keygen = false,
|
|
$ssh_key_type = 'rsa',
|
|
$ssh_key_bits = 2048,
|
|
$amp_project_name = 'services',
|
|
) inherits octavia::params {
|
|
|
|
include octavia::deps
|
|
include octavia::controller
|
|
|
|
validate_legacy(Hash, 'validate_hash', $nova_flavor_config)
|
|
|
|
if ! $::octavia::controller::amp_flavor_id {
|
|
if $manage_nova_flavor {
|
|
fail('When managing Nova flavor, octavia::controller::amp_flavor_id is required.')
|
|
} else {
|
|
warning('octavia::controller::amp_flavor_id is empty, Octavia Worker might not work correctly.')
|
|
}
|
|
} else {
|
|
if $manage_nova_flavor {
|
|
$octavia_flavor = { "octavia_${::octavia::controller::amp_flavor_id}" =>
|
|
{ 'id' => $::octavia::controller::amp_flavor_id,
|
|
'project_name' => $amp_project_name
|
|
}
|
|
}
|
|
|
|
$octavia_flavor_defaults = {
|
|
'ensure' => 'present',
|
|
'ram' => '1024',
|
|
'disk' => '2',
|
|
'vcpus' => '1',
|
|
'is_public' => false,
|
|
'tag' => ['octavia']
|
|
}
|
|
$nova_flavor_defaults = merge($octavia_flavor_defaults, $nova_flavor_config)
|
|
create_resources('nova_flavor', $octavia_flavor, $nova_flavor_defaults)
|
|
if $manage_service {
|
|
Nova_flavor<| tag == 'octavia' |> ~> Service['octavia-worker']
|
|
}
|
|
}
|
|
}
|
|
|
|
package { 'octavia-worker':
|
|
ensure => $package_ensure,
|
|
name => $::octavia::params::worker_package_name,
|
|
tag => ['openstack', 'octavia-package'],
|
|
}
|
|
|
|
if $manage_service {
|
|
if $enabled {
|
|
$service_ensure = 'running'
|
|
} else {
|
|
$service_ensure = 'stopped'
|
|
}
|
|
|
|
service { 'octavia-worker':
|
|
ensure => $service_ensure,
|
|
name => $::octavia::params::worker_service_name,
|
|
enable => $enabled,
|
|
hasstatus => true,
|
|
hasrestart => true,
|
|
tag => ['octavia-service'],
|
|
}
|
|
}
|
|
|
|
if $manage_keygen and ! $::octavia::controller::enable_ssh_access {
|
|
fail('SSH key management cannot be enabled when SSH key access is disabled')
|
|
}
|
|
|
|
if $manage_keygen {
|
|
exec {'create_amp_key_dir':
|
|
path => ['/bin', '/usr/bin'],
|
|
command => "mkdir -p ${key_path}",
|
|
creates => $key_path
|
|
}
|
|
|
|
file { 'amp_key_dir':
|
|
ensure => directory,
|
|
path => $key_path,
|
|
mode => '0700',
|
|
group => $::octavia::params::group,
|
|
owner => $::octavia::params::user
|
|
}
|
|
|
|
ssh_keygen { $::octavia::controller::amp_ssh_key_name:
|
|
user => $::octavia::params::user,
|
|
type => $ssh_key_type,
|
|
bits => $ssh_key_bits,
|
|
filename => "${key_path}/${::octavia::controller::amp_ssh_key_name}",
|
|
comment => 'Used for Octavia Service VM'
|
|
}
|
|
|
|
Package<| tag == 'octavia-package' |>
|
|
-> Exec['create_amp_key_dir']
|
|
-> File['amp_key_dir']
|
|
-> Ssh_keygen[$::octavia::controller::amp_ssh_key_name]
|
|
}
|
|
|
|
octavia_config {
|
|
'controller_worker/workers' : value => $workers;
|
|
}
|
|
}
|