re-add rabbitmq config for clustering interface
this adds back the ability to configure the rabbitmq/erlang kernel network interface which was removed in https://review.opendev.org/#/c/584427/ seemingly by accident. Closes-Bug: 1900160 Change-Id: I6f00396495853e117429c17fadfafe809e322a31
This commit is contained in:
parent
b668e27356
commit
1599252483
@ -79,6 +79,24 @@
|
||||
notify:
|
||||
- Restart rabbitmq container
|
||||
|
||||
- name: Copying over advanced.config
|
||||
become: true
|
||||
vars:
|
||||
service: "{{ rabbitmq_services['rabbitmq'] }}"
|
||||
template:
|
||||
src: "{{ item }}"
|
||||
dest: "{{ node_config_directory }}/{{ project_name }}/advanced.config"
|
||||
mode: "0660"
|
||||
with_first_found:
|
||||
- "{{ node_custom_config }}/rabbitmq/{{ inventory_hostname }}/advanced.config"
|
||||
- "{{ node_custom_config }}/rabbitmq/advanced.config"
|
||||
- "advanced.config.j2"
|
||||
when:
|
||||
- inventory_hostname in groups[service.group]
|
||||
- service.enabled | bool
|
||||
notify:
|
||||
- Restart rabbitmq container
|
||||
|
||||
- name: Copying over definitions.json
|
||||
become: true
|
||||
vars:
|
||||
|
7
ansible/roles/rabbitmq/templates/advanced.config.j2
Normal file
7
ansible/roles/rabbitmq/templates/advanced.config.j2
Normal file
@ -0,0 +1,7 @@
|
||||
[
|
||||
{kernel, [
|
||||
{inet_dist_use_interface, {% raw %}{{% endraw %}{{ api_interface_address | put_address_in_context('rabbitmq') }}}},
|
||||
{inet_dist_listen_min, {{ role_rabbitmq_cluster_port }}},
|
||||
{inet_dist_listen_max, {{ role_rabbitmq_cluster_port }}}
|
||||
]}
|
||||
].
|
@ -19,6 +19,12 @@
|
||||
"owner": "rabbitmq",
|
||||
"perm": "0600"
|
||||
},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/advanced.config",
|
||||
"dest": "/etc/rabbitmq/advanced.config",
|
||||
"owner": "rabbitmq",
|
||||
"perm": "0600"
|
||||
},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/definitions.json",
|
||||
"dest": "/etc/rabbitmq/definitions.json",
|
||||
|
@ -14,6 +14,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from ipaddress import ip_address
|
||||
from kolla_ansible.exception import FilterError
|
||||
|
||||
|
||||
@ -27,18 +28,32 @@ def put_address_in_context(address, context):
|
||||
:returns: string with address in proper context
|
||||
"""
|
||||
|
||||
if context not in ['url', 'memcache']:
|
||||
if context not in ['url', 'memcache', 'rabbitmq']:
|
||||
raise FilterError("Unknown context '{context}'"
|
||||
.format(context=context))
|
||||
|
||||
if ':' not in address:
|
||||
if ':' not in address and context != 'rabbitmq':
|
||||
return address
|
||||
|
||||
# must be IPv6 raw address
|
||||
|
||||
if context == 'url':
|
||||
return '[{address}]'.format(address=address)
|
||||
elif context == 'memcache':
|
||||
if context == 'memcache':
|
||||
return 'inet6:[{address}]'.format(address=address)
|
||||
|
||||
# rabbitmq/erlang has special syntax for ip addresses in IPv4 and IPv6
|
||||
# see: https://www.erlang.org/doc/man/inet.html
|
||||
# replacing dots and colons with decimal points
|
||||
# and converting IPv6 as described here:
|
||||
# https://www.erlang.org/doc/man/inet.html#type-ip6_address
|
||||
|
||||
if context == 'rabbitmq':
|
||||
if ip_address(address).version == 6:
|
||||
return (",".join(['16#%x' % int(x, 16)
|
||||
for x in
|
||||
ip_address(address).exploded.split(':')]))
|
||||
|
||||
return address.replace('.', ',')
|
||||
|
||||
return address
|
||||
|
@ -51,6 +51,15 @@ class TestAddressContextFilter(unittest.TestCase):
|
||||
self.assertEqual(put_address_in_context(addr, context),
|
||||
'inet6:[{}]'.format(addr))
|
||||
|
||||
def test_rabbitmq_context(self):
|
||||
context = 'rabbitmq'
|
||||
addr = '192.168.1.1'
|
||||
self.assertEqual(put_address_in_context(addr, context),
|
||||
'192,168,1,1')
|
||||
addr = 'fd::'
|
||||
self.assertEqual(put_address_in_context(addr, context),
|
||||
'16#fd,16#0,16#0,16#0,16#0,16#0,16#0,16#0')
|
||||
|
||||
def test_unknown_context(self):
|
||||
self.assertRaises(FilterError, put_address_in_context, '', 'lol')
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
adds back the option to configure the rabbitmq
|
||||
clustering interface via kolla
|
||||
`LP#1900160 <https://bugs.launchpad.net/kolla-ansible/+bug/1900160>`
|
Loading…
Reference in New Issue
Block a user