Skip to content

Commit

Permalink
Server-Manager Provisioning changes for rabbit ip:port list change
Browse files Browse the repository at this point in the history
Changing the contrail config files to use ip:port list
for rabbit_server knob instead of rabbit_server and rabbit_port
with vip and haproxy frontend port.
Closes-Bug: #1515773 - Rabbit HA change
Closes-Bug: #1536753 - Rabbit HA queues never set

Accompanies commit: https://review.opencontrail.org/#/c/15076/

Patch 2:
Added openstack files deleting the setting of rabbit_port per Thilak response

Patch 3:
Changed all config of rabbit_host to rabbit_hosts, verified that rabbit_hosts is available as a config option

Patch 4:
Added user specified amqp_ip_list and amqp_port to params (Used to set contrail_rabbit_servers)

Patch 5:
Added rabbitmq.pp as separate manifest as part of config to allow rabbitmq to be provisioned conditionally based on amqp_ip_list supplied by user.
Removed rabbit mq provisioning from config/config.pp and moved to config/rabbitmq.pp

Patch 6:
Added separate openstack_amqp_ip_list and contrail_amqp_ip_list for user to be able to configure separate rabbitmq clusters for config and opentack nodes.

Patch 7:
Redid after puppet refactoring changes

Patch 8:
Fixed bugs in uuid (rabbitmq clustering), params, init.pp, neutron and haproxy

Patch 9:
Changed defaults for amqp_port,list,etc - new params introduced.
Defaults changed from false to ''.
Change-Id: I1c916ca4bcc455f877d3f77fda9a69d3442d6754
  • Loading branch information
nitishkrishna committed Feb 3, 2016
1 parent 2b356e0 commit 6fa8beb
Show file tree
Hide file tree
Showing 24 changed files with 193 additions and 149 deletions.
2 changes: 1 addition & 1 deletion contrail/environment/modules/ceilometer/manifests/init.pp
Expand Up @@ -170,7 +170,7 @@
ceilometer_config { 'DEFAULT/rabbit_host': ensure => absent }
ceilometer_config { 'DEFAULT/rabbit_port': ensure => absent }
ceilometer_config { 'DEFAULT/rabbit_hosts':
value => join($rabbit_hosts, ',')
value => $rabbit_hosts
}
} else {
ceilometer_config { 'DEFAULT/rabbit_host': value => $rabbit_host }
Expand Down
2 changes: 1 addition & 1 deletion contrail/environment/modules/cinder/manifests/init.pp
Expand Up @@ -218,7 +218,7 @@
}

if $rabbit_hosts {
cinder_config { 'DEFAULT/rabbit_hosts': value => join($rabbit_hosts, ',') }
cinder_config { 'DEFAULT/rabbit_hosts': value => $rabbit_hosts }
cinder_config { 'DEFAULT/rabbit_ha_queues': value => true }
} else {
cinder_config { 'DEFAULT/rabbit_host': value => $rabbit_host }
Expand Down
Expand Up @@ -39,6 +39,7 @@
$xmpp_auth_enable = $::contrail::params::xmpp_auth_enable,
$xmpp_dns_auth_enable = $::contrail::params::xmpp_dns_auth_enable,
$enable_dpdk= $::contrail::params::enable_dpdk,
$contrail_rabbit_servers = $::contrail::params::contrail_rabbit_servers,
) {
$config_ip_to_use = $::contrail::params::config_ip_to_use
$keystone_ip_to_use = $::contrail::params::keystone_ip_to_use
Expand Down Expand Up @@ -245,7 +246,8 @@
'neutron/url' => { value => "http://${config_ip_to_use}:9696" },
'neutron/url_timeout' => { value => "300" },
'keystone_authtoken/admin_password'=> { value => "${keystone_admin_password}" },
'compute/compute_driver'=> { value => "libvirt.LibvirtDriver" }
'compute/compute_driver'=> { value => "libvirt.LibvirtDriver" },
'DEFAULT/rabbit_hosts' => {value => "${contrail_rabbit_servers}"},
}

create_resources(nova_config,$nova_params, {} )
Expand All @@ -264,6 +266,17 @@
lens_to_use => 'properties.lns',
match_value => 'nova.openstack.common.rpc.impl_qpid',
}
# Remove rabbit host and port from nova.conf
contrail::lib::augeas_conf_rm { "compute_rm_rabbit_host":
key => 'rabbit_host',
config_file => '/etc/nova/nova.conf',
lens_to_use => 'properties.lns',
}
contrail::lib::augeas_conf_rm { "compute_rm_rabbit_port":
key => 'rabbit_port',
config_file => '/etc/nova/nova.conf',
lens_to_use => 'properties.lns',
}

# Update modprobe.conf
if inline_template('<%= @operatingsystem.downcase %>') == 'centos' {
Expand Down
53 changes: 6 additions & 47 deletions contrail/environment/modules/contrail/manifests/config/config.pp
Expand Up @@ -41,7 +41,7 @@
$config_ip = $::contrail::params::config_ip_to_use,
$collector_ip = $::contrail::params::collector_ip_to_use,
$vip = $::contrail::params::vip_to_use,
$contrail_rabbit_port= $::contrail::params::contrail_rabbit_port,
$contrail_rabbit_servers= $::contrail::params::contrail_rabbit_servers,
$contrail_logoutput = $::contrail::params::contrail_logoutput,
) {
# Main code for class starts here
Expand Down Expand Up @@ -104,17 +104,6 @@

# Set number of config nodes
$cfgm_number = size($config_ip_list)
if ($cfgm_number == 1) {
$rabbitmq_conf_template = 'rabbitmq_config_single_node.erb'
} else {
$rabbitmq_conf_template = 'rabbitmq_config.erb'
}

if ( $host_control_ip == $config_ip_list[0]) {
$master = 'yes'
} else {
$master = 'no'
}

File {
ensure => 'present'
Expand Down Expand Up @@ -283,8 +272,7 @@
'DEFAULTS/disc_server_ip' : value => "$config_ip";
'DEFAULTS/disc_server_port' : value => '5998';
'DEFAULTS/zk_server_ip' : value => "$zk_ip_port_list";
'DEFAULTS/rabbit_server' : value => "$config_ip";
'DEFAULTS/rabbit_port' : value => "$contrail_rabbit_port";
'DEFAULTS/rabbit_server' : value => "$contrail_rabbit_servers";
'SECURITY/use_certs' : value => "$use_certs";
'SECURITY/keyfile' : value => '/etc/contrail/ssl/private_keys/apiserver_key.pem';
'SECURITY/certfile' : value => '/etc/contrail/ssl/certs/apiserver.pem';
Expand Down Expand Up @@ -312,8 +300,7 @@
'DEFAULTS/disc_server_port' : value => '5998';
'DEFAULTS/log_local' : value => '1';
'DEFAULTS/log_level' : value => 'SYS_NOTICE';
'DEFAULTS/rabbit_server' : value => "$config_ip";
'DEFAULTS/rabbit_port' : value => "$contrail_rabbit_port";
'DEFAULTS/rabbit_server' : value => "$contrail_rabbit_servers";
'SECURITY/use_certs' : value => "$use_certs";
'SECURITY/keyfile' : value => '/etc/contrail/ssl/private_keys/schema_xfer_key.pem';
'SECURITY/certfile' : value => '/etc/contrail/ssl/certs/schema_xfer.pem';
Expand All @@ -335,8 +322,7 @@
'DEFAULTS/region_name' : value => "$keystone_region_name";
'DEFAULTS/log_local' : value => '1';
'DEFAULTS/log_level' : value => 'SYS_NOTICE';
'DEFAULTS/rabbit_server' : value => "$rabbit_server_to_use";
'DEFAULTS/rabbit_port' : value => "$rabbit_port_to_use";
'DEFAULTS/rabbit_server' : value => "$contrail_rabbit_servers";
'SECURITY/use_certs' : value => "$use_certs";
'SECURITY/keyfile' : value => '/etc/contrail/ssl/private_keys/svc_monitor_key.pem';
'SECURITY/certfile' : value => '/etc/contrail/ssl/certs/svc_monitor.pem';
Expand All @@ -346,11 +332,10 @@
}

contrail_device_manager_config {
'DEFAULTS/rabbit_server' : value => "$config_ip";
'DEFAULTS/rabbit_server' : value => "$contrail_rabbit_servers";
'DEFAULTS/api_server_ip' : value => "$config_ip";
'DEFAULTS/disc_server_ip' : value => "$config_ip";
'DEFAULTS/api_server_port' : value => '8082';
'DEFAULTS/rabbit_port' : value => "$contrail_rabbit_port";
'DEFAULTS/zk_server_ip' : value => "$zk_ip_port_list";
'DEFAULTS/log_file' : value => '/var/log/contrail/contrail-device-manager.log';
'DEFAULTS/cassandra_server_list': value => "$cassandra_server_list";
Expand Down Expand Up @@ -429,33 +414,7 @@
content => template("${module_name}/contrail-discovery.svc.erb"),
}
->
# Handle rabbitmq.config changes
file {'/var/lib/rabbitmq/.erlang.cookie':
mode => '0400',
owner => rabbitmq,
group => rabbitmq,
content => $uuid
}->
file { '/etc/rabbitmq/rabbitmq.config' :
content => template("${module_name}/${rabbitmq_conf_template}"),
}
->
file { '/etc/rabbitmq/rabbitmq-env.conf' :
mode => '0755',
group => root,
content => $rabbit_env,
}
->
class {'::contrail::config::add_etc_hosts':
cfgm_ip_list_shell => $cfgm_ip_list_shell,
cfgm_name_list_shell => $cfgm_name_list_shell
}
->
class {'::contrail::config::verify_rabbitmq':
master => $master,
host_control_ip => $host_control_ip,
config_ip_list => $config_ip_list
}
class {'contrail::config::rabbitmq':}

# run setup-pki.sh script
if $use_certs == true {
Expand Down
Expand Up @@ -11,8 +11,7 @@
$internal_vip = $::contrail::params::internal_vip


$contrail_rabbit_host = $::contrail::params::contrail_rabbit_host
$contrail_rabbit_port = $::contrail::params::contrail_rabbit_port
$contrail_rabbit_servers = $::contrail::params::contrail_rabbit_servers
$contrail_host_roles = $::contrail::params::host_roles

# neutron auth depends upon a keystone configuration
Expand All @@ -27,13 +26,9 @@
$keystone_identity_uri = "${keystone_auth_protocol}://${controller}:5000"
$keystone_admin_token = hiera(openstack::keystone::admin_token)

# DEFAULT
$rabbit_host = $::contrail::params::amqp_server_ip_to_use


class { '::neutron':
rabbit_host => $::contrail::params::amqp_server_ip_to_use,
rabbit_port => $contrail_rabbit_port,
rabbit_hosts => $contrail_rabbit_servers,
bind_port => $::contrail::params::quantum_port,
auth_strategy => 'keystone',
core_plugin => 'neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2',
Expand Down
66 changes: 66 additions & 0 deletions contrail/environment/modules/contrail/manifests/config/rabbitmq.pp
@@ -0,0 +1,66 @@
class contrail::config::rabbitmq (
$host_control_ip = $::contrail::params::host_ip,
$control_ip_list = $::contrail::params::control_ip_list,
$haproxy = $::contrail::params::haproxy,
$openstack_manage_amqp = $::contrail::params::openstack_manage_amqp,
$amqp_server_ip = $::contrail::params::amqp_server_ip,
$config_ip_list = $::contrail::params::config_ip_list,
$config_name_list = $::contrail::params::config_name_list,
$config_ip = $::contrail::params::config_ip_to_use,
$collector_ip = $::contrail::params::collector_ip_to_use,
$contrail_rabbit_servers= $::contrail::params::contrail_rabbit_servers,
$contrail_logoutput = $::contrail::params::contrail_logoutput,
$contrail_amqp_ip_list = $::contrail::params::contrail_amqp_ip_list,
$uuid = $::contrail::params::uuid,
) {
# Check to see if amqp_ip_list was passed by user. If yes, rabbitmq provisioning can be skipped
if (! $contrail_amqp_ip_list) {
# Set number of config nodes
$cfgm_number = size($config_ip_list)
if ($cfgm_number == 1) {
$rabbitmq_conf_template = 'rabbitmq_config_single_node.erb'
} else {
$rabbitmq_conf_template = 'rabbitmq_config.erb'
}

if ( $host_control_ip == $config_ip_list[0]) {
$master = 'yes'
} else {
$master = 'no'
}

$cfgm_ip_list_shell = join($config_ip_list,",")
$cfgm_name_list_shell = join($config_name_list, ",")
$rabbit_env = "NODE_IP_ADDRESS=${host_control_ip}\nNODENAME=rabbit@${::hostname}ctl\n"

# Handle rabbitmq.config changes
file {'/var/lib/rabbitmq/.erlang.cookie':
mode => '0400',
owner => rabbitmq,
group => rabbitmq,
content => $uuid
}->
file { '/etc/rabbitmq/rabbitmq.config' :
content => template("${module_name}/${rabbitmq_conf_template}"),
}
->
file { '/etc/rabbitmq/rabbitmq-env.conf' :
mode => '0755',
group => root,
content => $rabbit_env,
}
->
class {'::contrail::config::add_etc_hosts':
cfgm_ip_list_shell => $cfgm_ip_list_shell,
cfgm_name_list_shell => $cfgm_name_list_shell
}
->
class {'::contrail::config::verify_rabbitmq':
master => $master,
host_control_ip => $host_control_ip,
config_ip_list => $config_ip_list
}
}

}

24 changes: 24 additions & 0 deletions contrail/environment/modules/contrail/manifests/init.pp
Expand Up @@ -534,6 +534,22 @@
# Flag for enabling xmpp dns autherization via cert exchange between agent and control.
# (optional) - Defaults to false.
#
# [*contrail_amqp_ip_list*]
# User provided list of amqp server ips which have already been provisioned with rabbit instead of config nodes
# (optional) - Defaults to ''.
#
# [*contrail_amqp_port*]
# User provided port for amqp service
# (optional) - Defaults to ''.
#
# [*openstack_amqp_ip_list*]
# User provided list of amqp server ips for openstack services to use
# (optional) - Defaults to ''.
#
# [*openstack_amqp_port*]
# User provided port for amqp service
# (optional) - Defaults to ''.
#
class contrail (
$host_ip = undef,
$uuid = undef,
Expand Down Expand Up @@ -674,6 +690,10 @@
$package_sku = "juno",
$core_mask = '',
$huge_pages = '',
$contrail_amqp_ip_list = '',
$contrail_amqp_port = '',
$openstack_amqp_ip_list = '',
$openstack_amqp_port = '',
) {
class { '::contrail::params':
# Common Parameters
Expand Down Expand Up @@ -754,6 +774,10 @@
mysql_root_password => hiera(openstack::mysql_root_password, hiera(contrail::params::mysql_root_password, $mysql_root_password)),
metadata_secret => hiera(openstack::metadata_secret, hiera(contrail::params::metadata_secret, $metadata_secret)),
enable_ceilometer => hiera(openstack::enable_ceilometer, hiera(contrail::params::enable_ceilometer, $enable_ceilometer)),
contrail_amqp_ip_list => hiera(openstack::contrail_amqp_ip_list, hiera(contrail::params::contrail_amqp_ip_list, $contrail_amqp_ip_list)),
contrail_amqp_port => hiera(openstack::contrail_amqp_port, hiera(contrail::params::contrail_amqp_port, $contrail_amqp_port)),
openstack_amqp_ip_list => hiera(openstack::openstack_amqp_ip_list, hiera(contrail::params::openstack_amqp_ip_list, $openstack_amqp_ip_list)),
openstack_amqp_port => hiera(openstack::openstack_amqp_port, hiera(contrail::params::openstack_amqp_port, $openstack_amqp_port)),
# Openstack HA Parameters
internal_vip => hiera(openstack::ha::internal_vip, hiera(contrail::params::internal_vip, $internal_vip)),
external_vip => hiera(openstack::ha::external_vip, hiera(contrail::params::external_vip, $external_vip)),
Expand Down
51 changes: 47 additions & 4 deletions contrail/environment/modules/contrail/manifests/params.pp
Expand Up @@ -533,6 +533,22 @@
# Flag for enabling xmpp dns autherization via cert exchange between agent and control.
# (optional) - Defaults to false.
#
# [*contrail_amqp_ip_list*]
# User provided list of amqp server ips which have already been provisioned with rabbit instead of config nodes
# (optional) - Defaults to ''.
#
# [*contrail_amqp_port*]
# User provided port for amqp service
# (optional) - Defaults to ''.
#
# [*openstack_amqp_ip_list*]
# User provided list of amqp server ips for openstack services to use
# (optional) - Defaults to ''.
#
# [*openstack_amqp_port*]
# User provided port for amqp service
# (optional) - Defaults to ''.
#
class contrail::params (
$host_ip,
$uuid,
Expand Down Expand Up @@ -672,7 +688,11 @@
$xmpp_dns_auth_enable,
$huge_pages,
$core_mask,
$package_sku
$package_sku,
$contrail_amqp_ip_list,
$contrail_amqp_port,
$openstack_amqp_ip_list,
$openstack_amqp_port,
) {
if (($contrail_internal_vip != '') or
($internal_vip != '') or
Expand Down Expand Up @@ -711,19 +731,16 @@
$vip_to_use = $contrail_internal_vip
$config_ip_to_use = $contrail_internal_vip
$collector_ip_to_use = $contrail_internal_vip
$contrail_rabbit_port = '5673'
$rest_api_port_to_use = '9081'
} elsif $internal_vip != '' {
$vip_to_use = $internal_vip
$config_ip_to_use = $internal_vip
$collector_ip_to_use = $internal_vip
$contrail_rabbit_port = '5673'
$rest_api_port_to_use = '9081'
} else {
$vip_to_use = ''
$config_ip_to_use = $config_ip_list[0]
$collector_ip_to_use = $collector_ip_list[0]
$contrail_rabbit_port = '5672'
$rest_api_port_to_use = '8081'
}

Expand All @@ -739,6 +756,32 @@
#rabbit host has same logic as config_ip
$contrail_rabbit_host = $config_ip_to_use

if ($contrail_amqp_ip_list != '') {
$contrail_rabbit_ip_list = $contrail_amqp_ip_list
} else {
$contrail_rabbit_ip_list = $config_ip_list
}
if ($contrail_amqp_port != '') {
$contrail_rabbit_port = $contrail_amqp_port
} else {
$contrail_rabbit_port = '5672'
}
if ($openstack_amqp_ip_list != '') {
$openstack_rabbit_ip_list = $openstack_amqp_ip_list
} elsif ($contrail_amqp_ip_list != '') {
$openstack_rabbit_ip_list = $contrail_amqp_ip_list
} else {
$openstack_rabbit_ip_list = $config_ip_list
}
if ($openstack_amqp_port != '') {
$openstack_rabbit_port = $openstack_amqp_port
} else {
$openstack_rabbit_port = '5672'
}

$contrail_rabbit_servers = join($contrail_rabbit_ip_list,",")
$openstack_rabbit_servers = join($openstack_rabbit_ip_list,",")

# Set amqp_server_ip
if ($::contrail::params::amqp_sever_ip != '') {
$amqp_server_ip_to_use = $amqp_sever_ip
Expand Down

0 comments on commit 6fa8beb

Please sign in to comment.