From 6091f0b957287fb47f70eeb527c47fe80c307a31 Mon Sep 17 00:00:00 2001 From: Martin Mágr Date: Mon, 18 Jan 2016 14:57:43 +0100 Subject: Add Rabbit IPv6 only support Adds Rabbit environment variable required for IPv6 only support Change-Id: Iec209ca83a5b0708ac828c4afaf9d2222e597f24 --- environments/network-isolation-v6.yaml | 2 ++ overcloud.yaml | 5 +++++ puppet/controller.yaml | 6 ++++++ puppet/manifests/overcloud_controller.pp | 12 +++++++++++- puppet/manifests/overcloud_controller_pacemaker.pp | 11 ++++++++++- 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/environments/network-isolation-v6.yaml b/environments/network-isolation-v6.yaml index d1d0818e..4c071747 100644 --- a/environments/network-isolation-v6.yaml +++ b/environments/network-isolation-v6.yaml @@ -49,3 +49,5 @@ parameter_defaults: MongoDbIPv6: True # Enable various IPv6 features in Nova. NovaIPv6: True + # Enable IPv6 environment for RabbitMQ. + RabbitIPv6: true diff --git a/overcloud.yaml b/overcloud.yaml index 343b1bc2..4dae673f 100644 --- a/overcloud.yaml +++ b/overcloud.yaml @@ -303,6 +303,10 @@ parameters: default: 16384 description: Configures RabbitMQ FD limit type: string + RabbitIPv6: + default: false + description: Enable IPv6 in RabbitMQ + type: boolean SnmpdReadonlyUserName: default: ro_snmp_user description: The user name for SNMPd with readonly rights running on all Overcloud nodes @@ -983,6 +987,7 @@ resources: RabbitClientUseSSL: {get_param: RabbitClientUseSSL} RabbitClientPort: {get_param: RabbitClientPort} RabbitFDLimit: {get_param: RabbitFDLimit} + RabbitIPv6: {get_param: RabbitIPv6} SaharaPassword: {get_param: SaharaPassword} SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName} SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword} diff --git a/puppet/controller.yaml b/puppet/controller.yaml index c97012d7..1d506a72 100644 --- a/puppet/controller.yaml +++ b/puppet/controller.yaml @@ -617,6 +617,10 @@ parameters: default: 16384 description: Configures RabbitMQ FD limit type: string + RabbitIPv6: + default: false + description: Enable IPv6 in RabbitMQ + type: boolean RedisVirtualIP: type: string default: '' # Has to be here because of the ignored empty value bug @@ -1185,6 +1189,7 @@ resources: rabbit_cookie: {get_param: RabbitCookie} rabbit_client_use_ssl: {get_param: RabbitClientUseSSL} rabbit_client_port: {get_param: RabbitClientPort} + rabbit_ipv6: {get_param: RabbitIPv6} mongodb_no_journal: {get_param: MongoDbNoJournal} mongodb_ipv6: {get_param: MongoDbIPv6} # We need to force this into quotes or hiera will return integer causing @@ -1603,6 +1608,7 @@ resources: rabbitmq::file_limit: {get_input: rabbit_fd_limit} rabbitmq::default_user: {get_input: rabbit_username} rabbitmq::default_pass: {get_input: rabbit_password} + rabbit_ipv6: {get_input: rabbit_ipv6} # Redis redis::bind: {get_input: redis_network} redis_vip: {get_input: redis_vip} diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp index 0d6a2389..b8600cf7 100644 --- a/puppet/manifests/overcloud_controller.pp +++ b/puppet/manifests/overcloud_controller.pp @@ -117,13 +117,23 @@ if hiera('step') >= 2 { $rabbit_nodes = hiera('rabbit_node_ips') if count($rabbit_nodes) > 1 { + + $rabbit_ipv6 = str2bool(hiera('rabbit_ipv6', false)) + if $rabbit_ipv6 { + $rabbit_env = merge(hiera('rabbitmq_environment'), { + 'RABBITMQ_SERVER_START_ARGS' => '"-proto_dist inet6_tcp"' + }) + } else { + $rabbit_env = hiera('rabbitmq_environment') + } + class { '::rabbitmq': config_cluster => true, cluster_nodes => $rabbit_nodes, tcp_keepalive => false, config_kernel_variables => hiera('rabbitmq_kernel_variables'), config_variables => hiera('rabbitmq_config_variables'), - environment_variables => hiera('rabbitmq_environment'), + environment_variables => $rabbit_env, } rabbitmq_policy { 'ha-all@/': pattern => '^(?!amq\.).*', diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp index 2bb081aa..ba8c449c 100644 --- a/puppet/manifests/overcloud_controller_pacemaker.pp +++ b/puppet/manifests/overcloud_controller_pacemaker.pp @@ -100,12 +100,21 @@ if hiera('step') >= 1 { # avoid races where non-master nodes attempt to start without # config (eg. binding on 0.0.0.0) # The module ignores erlang_cookie if cluster_config is false + $rabbit_ipv6 = str2bool(hiera('rabbit_ipv6', false)) + if $rabbit_ipv6 { + $rabbit_env = merge(hiera('rabbitmq_environment'), { + 'RABBITMQ_SERVER_START_ARGS' => '"-proto_dist inet6_tcp"' + }) + } else { + $rabbit_env = hiera('rabbitmq_environment') + } + class { '::rabbitmq': service_manage => false, tcp_keepalive => false, config_kernel_variables => hiera('rabbitmq_kernel_variables'), config_variables => hiera('rabbitmq_config_variables'), - environment_variables => hiera('rabbitmq_environment'), + environment_variables => $rabbit_env, } -> file { '/var/lib/rabbitmq/.erlang.cookie': ensure => file, -- cgit 1.2.3-korg