Possibility to detach cinder from controllers

Adds the possibility to use external (non-controllers) keystone,
db, rabbitmq, etc for cinder services.

Partial blueprint: detach-components-from-controllers

Change-Id: I46582e9199bc9ed389f1b441306b8b109325c69a
This commit is contained in:
Aleksandr Didenko 2015-05-26 14:02:43 -05:00
parent c35e5cafdb
commit e8ff3f01b4
4 changed files with 40 additions and 17 deletions

View File

@ -125,6 +125,7 @@ class openstack::cinder(
keystone_enabled => $keystone_enabled,
package_ensure => $::openstack_version['cinder'],
keystone_auth_host => $auth_host,
keystone_user => $keystone_user,
keystone_password => $cinder_user_password,
bind_host => $bind_host,
ratelimits => $cinder_rate_limits

View File

@ -23,7 +23,7 @@ $rabbit_hash = hiera('rabbit', {})
$glance_hash = hiera('glance', {})
$keystone_hash = hiera('keystone', {})
$swift_hash = hiera('swift', {})
$cinder_hash = hiera('cinder', {})
$cinder_hash = hiera_hash('cinder', {})
$ceilometer_hash = hiera('ceilometer',{})
$access_hash = hiera('access', {})
$mp_hash = hiera('mp', {})

View File

@ -1,10 +1,8 @@
notice('MODULAR: openstack-cinder.pp')
$cinder_hash = hiera('cinder', {})
$cinder_hash = hiera_hash('cinder', {})
$management_vip = hiera('management_vip')
$queue_provider = hiera('queue_provider', 'rabbitmq')
$cinder_db_user = hiera('cinder_db_user', 'cinder')
$cinder_db_dbname = hiera('cinder_db_dbname', 'cinder')
$internal_address = hiera('internal_address')
$cinder_volume_group = hiera('cinder_volume_group', 'cinder')
$controller_nodes = hiera('controller_nodes')
@ -12,21 +10,28 @@ $nodes_hash = hiera('nodes', {})
$storage_hash = hiera('storage', {})
$storage_address = hiera('storage_address')
$ceilometer_hash = hiera('ceilometer',{})
$rabbit_hash = hiera('rabbit', {})
$db_host = $management_vip
$service_endpoint = $management_vip
$rabbit_hash = hiera_hash('rabbit_hash', {})
$service_endpoint = hiera('service_endpoint', $management_vip)
$cinder_db_password = $cinder_hash[db_password]
$cinder_user_password = $cinder_hash[user_password]
$keystone_user = pick($cinder_hash['user'], 'cinder')
$keystone_tenant = pick($cinder_hash['tenant'], 'services')
$db_host = pick($cinder_hash['db_host'], $management_vip)
$cinder_db_user = pick($cinder_hash['db_user'], 'cinder')
$cinder_db_name = pick($cinder_hash['db_name'], 'cinder')
$roles = node_roles($nodes_hash, hiera('uid'))
if $internal_address in $controller_nodes {
if hiera('amqp_nodes', false) {
$amqp_nodes = hiera('amqp_nodes')
}
elsif $internal_address in $controller_nodes {
# prefer local MQ broker if it exists on this node
$amqp_nodes = concat(['127.0.0.1'], fqdn_rotate(delete($controller_nodes, $internal_address)))
} else {
$amqp_nodes = fqdn_rotate($controller_nodes)
}
$amqp_port = '5673'
$amqp_port = hiera('amqp_port', '5673')
$amqp_hosts = inline_template("<%= @amqp_nodes.map {|x| x + ':' + @amqp_port}.join ',' %>")
# Determine who should get the volume service
@ -57,7 +62,7 @@ $openstack_version = {
######### Cinder Controller Services ########
class {'openstack::cinder':
sql_connection => "mysql://${cinder_db_user}:${cinder_db_password}@${db_host}/${cinder_db_dbname}?charset=utf8&read_timeout=60",
sql_connection => "mysql://${cinder_db_user}:${cinder_db_password}@${db_host}/${cinder_db_name}?charset=utf8&read_timeout=60",
queue_provider => $queue_provider,
amqp_hosts => $amqp_hosts,
amqp_user => $rabbit_hash['user'],
@ -71,6 +76,8 @@ class {'openstack::cinder':
auth_host => $service_endpoint,
bind_host => $internal_address,
iscsi_bind_host => $storage_address,
keystone_user => $keystone_user,
keystone_tenant => $keystone_tenant,
cinder_user_password => $cinder_user_password,
use_syslog => hiera('use_syslog', true),
verbose => hiera('verbose', true),

View File

@ -27,7 +27,7 @@ $mysql_hash = hiera('mysql', {})
$rabbit_hash = hiera('rabbit', {})
$glance_hash = hiera('glance', {})
$keystone_hash = hiera('keystone', {})
$cinder_hash = hiera('cinder', {})
$cinder_hash = hiera_hash('cinder', {})
$ceilometer_hash = hiera('ceilometer',{})
$access_hash = hiera('access', {})
$network_scheme = hiera('network_scheme', {})
@ -47,6 +47,16 @@ $syslog_log_facility_sahara = hiera('syslog_log_facility_sahara','LOG_LOCAL0
$syslog_log_facility_ceilometer = hiera('syslog_log_facility_ceilometer','LOG_LOCAL0')
$syslog_log_facility_ceph = hiera('syslog_log_facility_ceph','LOG_LOCAL0')
$cinder_db_password = $cinder_hash[db_password]
$keystone_user = pick($cinder_hash['user'], 'cinder')
$keystone_tenant = pick($cinder_hash['tenant'], 'services')
$db_host = pick($cinder_hash['db_host'], $management_vip)
$cinder_db_user = pick($cinder_hash['db_user'], 'cinder')
$cinder_db_name = pick($cinder_hash['db_name'], 'cinder')
$service_endpoint = hiera('service_endpoint', $management_vip)
$glance_api_servers = hiera('glance_api_servers', "${management_vip}:9292")
# TODO: openstack_version is confusing, there's such string var in hiera and hardcoded hash
$hiera_openstack_version = hiera('openstack_version')
$openstack_version = {
@ -186,14 +196,17 @@ $roles = node_roles($nodes_hash, hiera('uid'))
$mountpoints = filter_hash($mp_hash,'point')
# AMQP client configuration
if $internal_address in $controller_nodes {
if hiera('amqp_nodes', false) {
$amqp_nodes = hiera('amqp_nodes')
}
elsif $internal_address in $controller_nodes {
# prefer local MQ broker if it exists on this node
$amqp_nodes = concat(['127.0.0.1'], fqdn_rotate(delete($controller_nodes, $internal_address)))
} else {
$amqp_nodes = fqdn_rotate($controller_nodes)
}
$amqp_port = '5673'
$amqp_port = hiera('amqp_port', '5673')
$amqp_hosts = inline_template("<%= @amqp_nodes.map {|x| x + ':' + @amqp_port}.join ',' %>")
$rabbit_ha_queues = true
@ -333,8 +346,8 @@ if member($roles, 'controller') or member($roles, 'primary-controller') {
# after the deployment is done.
class { 'openstack::cinder':
enable_volumes => false,
sql_connection => "mysql://cinder:${cinder_hash[db_password]}@${management_vip}/cinder?charset=utf8&read_timeout=60",
glance_api_servers => "${management_vip}:9292",
sql_connection => "mysql://${cinder_db_user}:${cinder_db_password}@${db_host}/${cinder_db_name}?charset=utf8&read_timeout=60",
glance_api_servers => $glance_api_servers,
bind_host => $bind_host,
queue_provider => $queue_provider,
amqp_hosts => $amqp_hosts,
@ -345,8 +358,10 @@ class { 'openstack::cinder':
manage_volumes => $manage_volumes,
iser => $storage_hash['iser'],
enabled => true,
auth_host => $management_vip,
auth_host => $service_endpoint,
iscsi_bind_host => $storage_address,
keystone_user => $keystone_user,
keystone_tenant => $keystone_tenant,
cinder_user_password => $cinder_hash[user_password],
syslog_log_facility => $syslog_log_facility_cinder,
debug => $debug,