fuel-library/deployment/puppet/openstack/manifests/swift/storage_node.pp

120 lines
4.1 KiB
Puppet

#
class openstack::swift::storage_node (
$swift_zone,
$swift_hash_suffix = 'swift_secret',
$swift_local_net_ip = $::ipaddress_eth0,
$storage_type = 'loopback',
$storage_base_dir = '/srv/loopback-device',
$storage_mnt_base_dir = '/srv/node',
$storage_devices = [
'1',
'2'],
$storage_weight = 1,
$package_ensure = 'present',
$loopback_size = '1048756',
$master_swift_proxy_ip,
$rings = [
'account',
'object',
'container'],
$sync_rings = true,
# if the cinder management components should be installed
$cinder = true,
$manage_volumes = false,
$nv_physical_volume = undef,
$cinder_volume_group = 'cinder-volumes',
$cinder_user_password = 'cinder_user_pass',
$cinder_db_password = 'cinder_db_pass',
$cinder_db_user = 'cinder',
$cinder_db_dbname = 'cinder',
$cinder_iscsi_bind_addr = false,
$cinder_rate_limits = false,
$db_host = '127.0.0.1',
$service_endpoint = '127.0.0.1',
$use_syslog = false,
$syslog_log_facility_cinder = 'LOCAL3',
$syslog_log_level = 'WARNING',
# Rabbit details necessary for cinder
$rabbit_nodes = false,
$rabbit_password = 'rabbit_pw',
$rabbit_host = false,
$rabbit_user = 'nova',
$rabbit_ha_virtual_ip = false,
$queue_provider = 'rabbitmq',
$qpid_password = 'qpid_pw',
$qpid_user = 'nova',
$qpid_nodes = ['127.0.0.1'],
) {
if !defined(Class['swift']) {
class { 'swift':
swift_hash_suffix => $swift_hash_suffix,
package_ensure => $package_ensure,
}
}
if $storage_type == 'loopback' {
# create xfs partitions on a loopback device and mount them
swift::storage::loopback { $storage_devices:
base_dir => $storage_base_dir,
mnt_base_dir => $storage_mnt_base_dir,
seek => $loopback_size,
require => Class['swift'],
}
}
# install all swift storage servers together
class { 'swift::storage::all':
storage_local_net_ip => $swift_local_net_ip,
devices => $storage_mnt_base_dir,
devices_dirs => $storage_devices,
swift_zone => $swift_zone,
}
validate_string($master_swift_proxy_ip)
if $sync_rings {
if member($rings, 'account') and !defined(Swift::Ringsync['account']) {
swift::ringsync { 'account': ring_server => $master_swift_proxy_ip }
}
if member($rings, 'object') and !defined(Swift::Ringsync['object']) {
swift::ringsync { 'object': ring_server => $master_swift_proxy_ip }
}
if member($rings, 'container') and !defined(Swift::Ringsync['container']) {
swift::ringsync { 'container': ring_server => $master_swift_proxy_ip }
}
Swift::Ringsync <| |> ~> Class["swift::storage::all"]
}
if ($cinder and $manage_volumes) {
if !(defined(Class['openstack::cinder'])) {
class { 'openstack::cinder':
sql_connection => "mysql://${cinder_db_user}:${cinder_db_password}@${db_host}/${cinder_db_dbname}?charset=utf8",
queue_provider => $queue_provider,
rabbit_password => $rabbit_password,
rabbit_host => false,
rabbit_nodes => $rabbit_nodes,
qpid_user => $qpid_user,
qpid_password => $qpid_password,
qpid_nodes => $qpid_nodes,
volume_group => $cinder_volume_group,
physical_volume => $nv_physical_volume,
manage_volumes => $manage_volumes,
enabled => true,
auth_host => $service_endpoint,
bind_host => false,
iscsi_bind_host => $cinder_iscsi_bind_addr,
cinder_user_password => $cinder_user_password,
use_syslog => $use_syslog,
syslog_log_facility => $syslog_log_facility_cinder,
syslog_log_level => $syslog_log_level,
cinder_rate_limits => $cinder_rate_limits,
rabbit_ha_virtual_ip => $rabbit_ha_virtual_ip,
}
}
}
}