0c71aeb9db
- Removed deprecated parameters in openstack::controller class declaration - Added possibility to use external keystone, rabbitmq and DB for nova services. - Added parameters for keystone nova tenant overwrite Partial blueprint: detach-components-from-controllers Change-Id: Ie00ec394d66b9bb6a91ff5ec3899ac5ed7bcb4d7 Co-Authored-By: Aleksandr Didenko <adidenko@mirantis.com>
217 lines
9.4 KiB
Puppet
217 lines
9.4 KiB
Puppet
notice('MODULAR: globals.pp')
|
|
#FIXME(bogdando) make all evaluations/hardcode to come from a hiera
|
|
# For example, assume it is already calculated and use just:
|
|
# $roles=hiera('roles')
|
|
# instead of:
|
|
# $roles = node_roles($nodes_hash, hiera('uid'))
|
|
|
|
$fuel_settings = parseyaml($astute_settings_yaml)
|
|
|
|
$nodes_hash = hiera('nodes', {})
|
|
$deployment_mode = hiera('deployment_mode', 'ha_compact')
|
|
$roles = hiera('roles', node_roles($nodes_hash, hiera('uid')))
|
|
$storage_hash = hiera('storage', {})
|
|
$syslog_hash = hiera('syslog', {})
|
|
$base_syslog_hash = hiera('base_syslog', {})
|
|
$sahara_hash = hiera('sahara', {})
|
|
$murano_hash = hiera('murano', {})
|
|
$heat_hash = hiera_hash('heat', {})
|
|
$vcenter_hash = hiera('vcenter', {})
|
|
$nova_hash = hiera_hash('nova', {})
|
|
$mysql_hash = hiera('mysql', {})
|
|
$rabbit_hash = hiera('rabbit', {})
|
|
$glance_hash = hiera_hash('glance', {})
|
|
$keystone_hash = hiera_hash('keystone', {})
|
|
$swift_hash = hiera('swift', {})
|
|
$cinder_hash = hiera_hash('cinder', {})
|
|
$ceilometer_hash = hiera('ceilometer',{})
|
|
$access_hash = hiera_hash('access', {})
|
|
$mp_hash = hiera('mp', {})
|
|
|
|
$node_role = hiera('role')
|
|
$cinder_nodes_array = hiera('cinder_nodes', [])
|
|
$dns_nameservers = hiera('dns_nameservers', [])
|
|
$use_ceilometer = $ceilometer_hash['enabled']
|
|
$use_neutron = hiera('quantum', false)
|
|
$network_scheme = hiera('network_scheme', {})
|
|
$verbose = true
|
|
$debug = hiera('debug', false)
|
|
$use_monit = false
|
|
$master_ip = hiera('master_ip')
|
|
$management_network_range = hiera('management_network_range')
|
|
|
|
$use_syslog = hiera('use_syslog', true)
|
|
$syslog_log_facility_glance = hiera('syslog_log_facility_glance', 'LOG_LOCAL2')
|
|
$syslog_log_facility_cinder = hiera('syslog_log_facility_cinder', 'LOG_LOCAL3')
|
|
$syslog_log_facility_neutron = hiera('syslog_log_facility_neutron', 'LOG_LOCAL4')
|
|
$syslog_log_facility_nova = hiera('syslog_log_facility_nova','LOG_LOCAL6')
|
|
$syslog_log_facility_keystone = hiera('syslog_log_facility_keystone', 'LOG_LOCAL7')
|
|
$syslog_log_facility_murano = hiera('syslog_log_facility_murano', 'LOG_LOCAL0')
|
|
$syslog_log_facility_heat = hiera('syslog_log_facility_heat','LOG_LOCAL0')
|
|
$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')
|
|
|
|
$nova_report_interval = hiera('nova_report_interval', 60)
|
|
$nova_service_down_time = hiera('nova_service_down_time', 180)
|
|
$apache_ports = hiera_array('apache_ports', ['80', '8888'])
|
|
|
|
$openstack_version = hiera('openstack_version',
|
|
{
|
|
'keystone' => 'installed',
|
|
'glance' => 'installed',
|
|
'horizon' => 'installed',
|
|
'nova' => 'installed',
|
|
'novncproxy' => 'installed',
|
|
'cinder' => 'installed',
|
|
}
|
|
)
|
|
|
|
$nova_rate_limits = hiera('nova_rate_limits',
|
|
{
|
|
'POST' => 100000,
|
|
'POST_SERVERS' => 100000,
|
|
'PUT' => 1000,
|
|
'GET' => 100000,
|
|
'DELETE' => 100000
|
|
}
|
|
)
|
|
|
|
$cinder_rate_limits = hiera('cinder_rate_limits',
|
|
{
|
|
'POST' => 100000,
|
|
'POST_SERVERS' => 100000,
|
|
'PUT' => 100000,
|
|
'GET' => 100000,
|
|
'DELETE' => 100000
|
|
}
|
|
)
|
|
|
|
$node = hiera('node', filter_nodes($nodes_hash, 'name', $::hostname))
|
|
if empty($node) {
|
|
fail("Node hostname is not defined in the hash structure")
|
|
}
|
|
$default_gateway = hiera('default_gateway', $node[0]['default_gateway'])
|
|
|
|
prepare_network_config($network_scheme)
|
|
$internal_int = get_network_role_property('management', 'interface')
|
|
$public_int = get_network_role_property('ex', 'interface')
|
|
$internal_address = get_network_role_property('management', 'ipaddr')
|
|
$internal_netmask = get_network_role_property('management', 'netmask')
|
|
$public_address = get_network_role_property('ex', 'ipaddr')
|
|
$public_netmask = get_network_role_property('ex', 'netmask')
|
|
$storage_address = get_network_role_property('storage', 'ipaddr')
|
|
$storage_netmask = get_network_role_property('storage', 'netmask')
|
|
|
|
if $use_neutron {
|
|
$novanetwork_params = {}
|
|
$neutron_config = hiera_hash('quantum_settings')
|
|
$network_provider = 'neutron'
|
|
$neutron_db_password = $neutron_config['database']['passwd']
|
|
$neutron_user_password = $neutron_config['keystone']['admin_password']
|
|
$neutron_metadata_proxy_secret = $neutron_config['metadata']['metadata_proxy_shared_secret']
|
|
$base_mac = $neutron_config['L2']['base_mac']
|
|
} else {
|
|
$neutron_config = {}
|
|
$novanetwork_params = hiera('novanetwork_parameters')
|
|
$network_size = $novanetwork_params['network_size']
|
|
$num_networks = $novanetwork_params['num_networks']
|
|
$network_provider = 'nova'
|
|
if ( $novanetwork_params['network_manager'] == 'FlatDHCPManager') {
|
|
$private_int = get_network_role_property('novanetwork/fixed', 'interface')
|
|
} else {
|
|
$private_int = get_network_role_property('novanetwork/vlan', 'interface')
|
|
$vlan_start = $novanetwork_params['vlan_start']
|
|
$network_config = {
|
|
'vlan_start' => $vlan_start,
|
|
}
|
|
}
|
|
$network_manager = "nova.network.manager.${novanetwork_params['network_manager']}"
|
|
}
|
|
|
|
if $deployment_mode == 'ha_compact' {
|
|
$primary_controller = $node_role ? { 'primary-controller' => true, default =>false }
|
|
$primary_controller_nodes = filter_nodes($nodes_hash,'role','primary-controller')
|
|
$controllers = concat($primary_controller_nodes,
|
|
filter_nodes($nodes_hash,'role','controller')
|
|
)
|
|
$controller_internal_addresses = nodes_to_hash($controllers,'name','internal_address')
|
|
$controller_public_addresses = nodes_to_hash($controllers,'name','public_address')
|
|
$controller_storage_addresses = nodes_to_hash($controllers,'name','storage_address')
|
|
$controller_hostnames = keys($controller_internal_addresses)
|
|
$controller_nodes = ipsort(values($controller_internal_addresses))
|
|
$controller_node_public = hiera('public_vip')
|
|
$controller_node_address = hiera('management_vip')
|
|
$mountpoints = filter_hash($mp_hash,'point')
|
|
} else {
|
|
# simple multinode
|
|
$controller = filter_nodes($nodes_hash, 'role', 'controller')
|
|
$controller_node_address = $controller[0]['internal_address']
|
|
$controller_node_public = $controller[0]['public_address']
|
|
}
|
|
|
|
# AMQP configuration
|
|
$queue_provider = hiera('queue_provider','rabbitmq')
|
|
|
|
if !$rabbit_hash['user'] {
|
|
$rabbit_hash['user'] = 'nova'
|
|
}
|
|
|
|
if $deployment_mode == 'ha_compact' {
|
|
$amqp_port = '5673'
|
|
$amqp_hosts = amqp_hosts($controller_nodes, $amqp_port, $internal_address)
|
|
$rabbit_ha_queues = true
|
|
$rabbitmq_cluster_nodes = $controller_hostnames
|
|
} else {
|
|
# simple multinode (deprecated)
|
|
$amqp_port = '5672'
|
|
$amqp_hosts = amqp_hosts($controller_node_address, $amqp_port)
|
|
$rabbitmq_cluster_nodes = [ $controller[0]['name'] ]
|
|
$rabbit_ha_queues = false
|
|
}
|
|
|
|
# MySQL and SQLAlchemy backend configuration
|
|
$custom_mysql_setup_class = hiera('custom_mysql_setup_class', 'galera')
|
|
$max_pool_size = hiera('max_pool_size', min($::processorcount * 5 + 0, 30 + 0))
|
|
$max_overflow = hiera('max_overflow', min($::processorcount * 5 + 0, 60 + 0))
|
|
$max_retries = hiera('max_retries', '-1')
|
|
$idle_timeout = hiera('idle_timeout','3600')
|
|
$nova_db_password = $nova_hash['db_password']
|
|
$cinder_iscsi_bind_addr = $storage_address
|
|
$sql_connection = "mysql://nova:${nova_db_password}@${controller_node_address}/nova?read_timeout = 6 0"
|
|
$mirror_type = hiera('mirror_type', 'external')
|
|
$multi_host = hiera('multi_host', true)
|
|
|
|
# Determine who should get the volume service
|
|
if (member($roles, 'cinder') and $storage_hash['volumes_lvm']) {
|
|
$manage_volumes = 'iscsi'
|
|
} elsif (member($roles, 'cinder') and $storage_hash['volumes_vmdk']) {
|
|
$manage_volumes = 'vmdk'
|
|
} elsif ($storage_hash['volumes_ceph']) {
|
|
$manage_volumes = 'ceph'
|
|
} else {
|
|
$manage_volumes = false
|
|
}
|
|
|
|
#Determine who should be the default backend
|
|
if ($storage_hash['images_ceph']) {
|
|
$glance_backend = 'ceph'
|
|
$glance_known_stores = [ 'glance.store.rbd.Store', 'glance.store.http.Store' ]
|
|
} elsif ($storage_hash['images_vcenter']) {
|
|
$glance_backend = 'vmware'
|
|
$glance_known_stores = [ 'glance.store.vmware_datastore.Store', 'glance.store.http.Store' ]
|
|
} else {
|
|
$glance_backend = 'file'
|
|
$glance_known_stores = false
|
|
}
|
|
|
|
# save all these global variables into hiera yaml file for later use
|
|
# by other manifests with hiera function
|
|
file { '/etc/hiera/globals.yaml' :
|
|
ensure => 'present',
|
|
mode => '0644',
|
|
owner => 'root',
|
|
group => 'root',
|
|
content => template('osnailyfacter/globals_yaml.erb')
|
|
}
|