Add a new 'outward' rabbitmq instance
Certain services such as Murano and trove require access to a rabbitmq instance from tenant networks. [0] Exposing the internal rabbitmq to end users is a security hole, hence there are two options, 1) use vhosts in the existing rabbitmq, or two a separate rabbitmq instances. Given the importance of rabbitmq to the OpenStack deployment, we have decided to go with a separate instance. Refer to [1] for more detail on the various options. This change makes the rabbitmq role generic so that it can be reused, in this case to start 'outward_rabbitmq'. It needs to be exposed via haproxy both for network isolation and also because this is what Murano configuration requires. Follow on patches will be added to add a vhost in this outward instance for Murano and other services which require access. Based on the original work by bdaca[2] [0] http://murano.readthedocs.io/en/stable-liberty/intro/architecture.html [1] http://lists.openstack.org/pipermail/openstack-dev/2016-December/109091.html [2] https://review.openstack.org/#/c/374525 Change-Id: Ib2bcc7ed4bf4f883a7cd1dfad3db89201e3cfd8d Partial-Bug: #1620374 Depends-On: I020eb6219f89a310451becde41f6f1c7f54baadd Co-Authored-By: Bartłomiej Daca <bartek.daca@gmail.com>
This commit is contained in:
parent
eefa4f6522
commit
d8fe3ea780
@ -162,6 +162,11 @@ rabbitmq_management_port: "15672"
|
|||||||
rabbitmq_cluster_port: "25672"
|
rabbitmq_cluster_port: "25672"
|
||||||
rabbitmq_epmd_port: "4369"
|
rabbitmq_epmd_port: "4369"
|
||||||
|
|
||||||
|
outward_rabbitmq_port: "5674"
|
||||||
|
outward_rabbitmq_management_port: "15674"
|
||||||
|
outward_rabbitmq_cluster_port: "25674"
|
||||||
|
outward_rabbitmq_epmd_port: "4371"
|
||||||
|
|
||||||
mongodb_port: "27017"
|
mongodb_port: "27017"
|
||||||
mongodb_web_port: "28017"
|
mongodb_web_port: "28017"
|
||||||
|
|
||||||
@ -300,6 +305,7 @@ enable_memcached: "yes"
|
|||||||
enable_neutron: "yes"
|
enable_neutron: "yes"
|
||||||
enable_nova: "yes"
|
enable_nova: "yes"
|
||||||
enable_rabbitmq: "yes"
|
enable_rabbitmq: "yes"
|
||||||
|
enable_outward_rabbitmq: "{{ enable_murano | bool }}"
|
||||||
|
|
||||||
# Additional optional OpenStack features and services are specified here
|
# Additional optional OpenStack features and services are specified here
|
||||||
enable_aodh: "no"
|
enable_aodh: "no"
|
||||||
@ -411,6 +417,7 @@ enable_kibana: "{{ 'yes' if enable_central_logging | bool else 'no' }}"
|
|||||||
####################
|
####################
|
||||||
rabbitmq_user: "openstack"
|
rabbitmq_user: "openstack"
|
||||||
rabbitmq_version: "rabbitmq_server-3.6/plugins/rabbitmq_clusterer-3.6.x.ez/rabbitmq_clusterer-3.6.x-667f92b0/ebin"
|
rabbitmq_version: "rabbitmq_server-3.6/plugins/rabbitmq_clusterer-3.6.x.ez/rabbitmq_clusterer-3.6.x-667f92b0/ebin"
|
||||||
|
outward_rabbitmq_user: "openstack"
|
||||||
|
|
||||||
####################
|
####################
|
||||||
# HAProxy options
|
# HAProxy options
|
||||||
@ -520,6 +527,7 @@ nova_backend: "{{ 'rbd' if nova_backend_ceph | bool else 'default' }}"
|
|||||||
#######################
|
#######################
|
||||||
horizon_backend_database: "{{ enable_murano | bool }}"
|
horizon_backend_database: "{{ enable_murano | bool }}"
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# Octavia options
|
# Octavia options
|
||||||
#################
|
#################
|
||||||
|
@ -66,6 +66,9 @@ control
|
|||||||
[rabbitmq:children]
|
[rabbitmq:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
[outward-rabbitmq:children]
|
||||||
|
control
|
||||||
|
|
||||||
[mongodb:children]
|
[mongodb:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
@ -87,6 +87,9 @@ control
|
|||||||
[rabbitmq:children]
|
[rabbitmq:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
[outward-rabbitmq:children]
|
||||||
|
control
|
||||||
|
|
||||||
[mongodb:children]
|
[mongodb:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
@ -128,6 +128,7 @@
|
|||||||
- { name: "neutron", enabled: "{{ enable_neutron }}" }
|
- { name: "neutron", enabled: "{{ enable_neutron }}" }
|
||||||
- { name: "nova", enabled: "{{ enable_nova }}" }
|
- { name: "nova", enabled: "{{ enable_nova }}" }
|
||||||
- { name: "octavia", enabled: "{{ enable_octavia }}" }
|
- { name: "octavia", enabled: "{{ enable_octavia }}" }
|
||||||
|
- { name: "outward-rabbitmq", enabled: "{{ enable_outward_rabbitmq }}" }
|
||||||
- { name: "panko", enabled: "{{ enable_panko }}" }
|
- { name: "panko", enabled: "{{ enable_panko }}" }
|
||||||
- { name: "rabbitmq", enabled: "{{ enable_rabbitmq }}" }
|
- { name: "rabbitmq", enabled: "{{ enable_rabbitmq }}" }
|
||||||
- { name: "rally", enabled: "{{ enable_rally }}" }
|
- { name: "rally", enabled: "{{ enable_rally }}" }
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
"/var/log/kolla/outward-rabbitmq/*.log"
|
||||||
|
{
|
||||||
|
}
|
@ -36,6 +36,7 @@
|
|||||||
( 'neutron', enable_neutron ),
|
( 'neutron', enable_neutron ),
|
||||||
( 'nova', enable_nova ),
|
( 'nova', enable_nova ),
|
||||||
( 'octavia', enable_octavia ),
|
( 'octavia', enable_octavia ),
|
||||||
|
( 'outward-rabbitmq', enable_outward_rabbitmq ),
|
||||||
( 'panko', enable_panko ),
|
( 'panko', enable_panko ),
|
||||||
( 'rabbitmq', enable_rabbitmq ),
|
( 'rabbitmq', enable_rabbitmq ),
|
||||||
( 'rally', enable_rally ),
|
( 'rally', enable_rally ),
|
||||||
|
@ -564,6 +564,17 @@
|
|||||||
- inventory_hostname in groups['haproxy']
|
- inventory_hostname in groups['haproxy']
|
||||||
- haproxy_stat.find('rabbitmq_management') == -1
|
- haproxy_stat.find('rabbitmq_management') == -1
|
||||||
|
|
||||||
|
- name: Checking free port for outward RabbitMQ Management HAProxy
|
||||||
|
wait_for:
|
||||||
|
host: "{{ kolla_internal_vip_address }}"
|
||||||
|
port: "{{ outward_rabbitmq_management_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when:
|
||||||
|
- enable_outward_rabbitmq | bool
|
||||||
|
- inventory_hostname in groups['haproxy']
|
||||||
|
- haproxy_stat.find('outward_rabbitmq_management') == -1
|
||||||
|
|
||||||
- name: Checking free port for RadosGW HAProxy
|
- name: Checking free port for RadosGW HAProxy
|
||||||
wait_for:
|
wait_for:
|
||||||
host: "{{ kolla_internal_vip_address }}"
|
host: "{{ kolla_internal_vip_address }}"
|
||||||
|
@ -44,6 +44,24 @@ listen rabbitmq_management
|
|||||||
{% for host in groups['rabbitmq'] %}
|
{% for host in groups['rabbitmq'] %}
|
||||||
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ rabbitmq_management_port }} check inter 2000 rise 2 fall 5
|
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ rabbitmq_management_port }} check inter 2000 rise 2 fall 5
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
listen outward_rabbitmq_management
|
||||||
|
bind {{ kolla_internal_vip_address }}:{{ outward_rabbitmq_management_port }}
|
||||||
|
{% for host in groups['outward-rabbitmq'] %}
|
||||||
|
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ outward_rabbitmq_management_port }} check inter 2000 rise 2 fall 5
|
||||||
|
{% endfor %}
|
||||||
|
{% if haproxy_enable_external_vip | bool %}
|
||||||
|
|
||||||
|
listen outward_rabbitmq_external
|
||||||
|
mode tcp
|
||||||
|
option tcplog
|
||||||
|
timeout client 3600s
|
||||||
|
timeout server 3600s
|
||||||
|
bind {{ kolla_external_vip_address }}:{{ outward_rabbitmq_port }}
|
||||||
|
{% for host in groups['outward-rabbitmq'] %}
|
||||||
|
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ outward_rabbitmq_port }} check inter 2000 rise 2 fall 5
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if enable_mongodb | bool %}
|
{% if enable_mongodb | bool %}
|
||||||
|
@ -3,14 +3,18 @@ project_name: "rabbitmq"
|
|||||||
|
|
||||||
rabbitmq_services:
|
rabbitmq_services:
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
container_name: rabbitmq
|
container_name: "{{ project_name }}"
|
||||||
group: rabbitmq
|
group: "{{ role_rabbitmq_groups }}"
|
||||||
enabled: true
|
enabled: true
|
||||||
image: "{{ rabbitmq_image_full }}"
|
image: "{{ rabbitmq_image_full }}"
|
||||||
|
environment:
|
||||||
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||||
|
RABBITMQ_CLUSTER_COOKIE: "{{ role_rabbitmq_cluster_cookie }}"
|
||||||
|
RABBITMQ_LOG_DIR: "/var/log/kolla/{{ project_name }}"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ node_config_directory }}/rabbitmq/:{{ container_config_directory }}/:ro"
|
- "{{ node_config_directory }}/{{ project_name }}/:{{ container_config_directory }}/:ro"
|
||||||
- "/etc/localtime:/etc/localtime:ro"
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
- "rabbitmq:/var/lib/rabbitmq/"
|
- "{{ project_name }}:/var/lib/rabbitmq/"
|
||||||
- "kolla_logs:/var/log/kolla/"
|
- "kolla_logs:/var/log/kolla/"
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
name: "{{ service.container_name }}"
|
name: "{{ service.container_name }}"
|
||||||
image: "{{ service.image }}"
|
image: "{{ service.image }}"
|
||||||
volumes: "{{ service.volumes }}"
|
volumes: "{{ service.volumes }}"
|
||||||
|
environment: "{{ service.environment }}"
|
||||||
when:
|
when:
|
||||||
- action != "config"
|
- action != "config"
|
||||||
- inventory_hostname in groups[service.group]
|
- inventory_hostname in groups[service.group]
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
kolla_docker:
|
kolla_docker:
|
||||||
action: "create_volume"
|
action: "create_volume"
|
||||||
common_options: "{{ docker_common_options }}"
|
common_options: "{{ docker_common_options }}"
|
||||||
name: "rabbitmq"
|
name: "{{ project_name }}"
|
||||||
register: rabbitmq_volume
|
register: rabbitmq_volume
|
||||||
|
|
||||||
- name: Running RabbitMQ bootstrap container
|
- name: Running RabbitMQ bootstrap container
|
||||||
@ -14,14 +14,15 @@
|
|||||||
environment:
|
environment:
|
||||||
KOLLA_BOOTSTRAP:
|
KOLLA_BOOTSTRAP:
|
||||||
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||||
RABBITMQ_CLUSTER_COOKIE: "{{ rabbitmq_cluster_cookie }}"
|
RABBITMQ_CLUSTER_COOKIE: "{{ role_rabbitmq_cluster_cookie }}"
|
||||||
|
RABBITMQ_LOG_DIR: "/var/log/kolla/{{ project_name }}"
|
||||||
image: "{{ rabbitmq_image_full }}"
|
image: "{{ rabbitmq_image_full }}"
|
||||||
labels:
|
labels:
|
||||||
BOOTSTRAP:
|
BOOTSTRAP:
|
||||||
name: "rabbitmq_bootstrap"
|
name: "{{ project_name }}_bootstrap"
|
||||||
restart_policy: "never"
|
restart_policy: "never"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ node_config_directory }}/rabbitmq/:{{ container_config_directory }}/:ro"
|
- "{{ node_config_directory }}/{{ project_name }}/:{{ container_config_directory }}/:ro"
|
||||||
- "/etc/localtime:/etc/localtime:ro"
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
- "rabbitmq:/var/lib/rabbitmq/"
|
- "{{ project_name }}:/var/lib/rabbitmq/"
|
||||||
when: rabbitmq_volume | changed
|
when: rabbitmq_volume | changed
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
- name: Ensuring config directories exist
|
- name: Ensuring config directories exist
|
||||||
file:
|
file:
|
||||||
path: "{{ node_config_directory }}/{{ item.key }}"
|
path: "{{ node_config_directory }}/{{ project_name }}"
|
||||||
state: "directory"
|
state: "directory"
|
||||||
recurse: yes
|
recurse: yes
|
||||||
when:
|
when:
|
||||||
@ -12,7 +12,7 @@
|
|||||||
- name: Copying over config.json files for services
|
- name: Copying over config.json files for services
|
||||||
template:
|
template:
|
||||||
src: "{{ item.key }}.json.j2"
|
src: "{{ item.key }}.json.j2"
|
||||||
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
|
dest: "{{ node_config_directory }}/{{ project_name }}/config.json"
|
||||||
register: rabbitmq_config_jsons
|
register: rabbitmq_config_jsons
|
||||||
when:
|
when:
|
||||||
- inventory_hostname in groups[item.value.group]
|
- inventory_hostname in groups[item.value.group]
|
||||||
@ -26,7 +26,7 @@
|
|||||||
service: "{{ rabbitmq_services['rabbitmq'] }}"
|
service: "{{ rabbitmq_services['rabbitmq'] }}"
|
||||||
template:
|
template:
|
||||||
src: "{{ item }}.j2"
|
src: "{{ item }}.j2"
|
||||||
dest: "{{ node_config_directory }}/rabbitmq/{{ item }}"
|
dest: "{{ node_config_directory }}/{{ project_name }}/{{ item }}"
|
||||||
register: rabbitmq_confs
|
register: rabbitmq_confs
|
||||||
when:
|
when:
|
||||||
- inventory_hostname in groups[service.group]
|
- inventory_hostname in groups[service.group]
|
||||||
@ -46,6 +46,7 @@
|
|||||||
name: "{{ item.value.container_name }}"
|
name: "{{ item.value.container_name }}"
|
||||||
image: "{{ item.value.image }}"
|
image: "{{ item.value.image }}"
|
||||||
volumes: "{{ item.value.volumes }}"
|
volumes: "{{ item.value.volumes }}"
|
||||||
|
environment: "{{ item.value.environment }}"
|
||||||
register: check_rabbitmq_containers
|
register: check_rabbitmq_containers
|
||||||
when:
|
when:
|
||||||
- action != "config"
|
- action != "config"
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
---
|
---
|
||||||
- include: "{{ action }}.yml"
|
- include: "{{ action }}.yml"
|
||||||
when: inventory_hostname in groups['rabbitmq']
|
when: inventory_hostname in groups[role_rabbitmq_groups]
|
||||||
|
@ -59,3 +59,57 @@
|
|||||||
with_items: "{{ rabbitmq_hostnames.results }}"
|
with_items: "{{ rabbitmq_hostnames.results }}"
|
||||||
when:
|
when:
|
||||||
- "item.stdout.find(hostvars[item['item']]['ansible_' ~ hostvars[item['item']]['api_interface']]['ipv4']['address']) == -1"
|
- "item.stdout.find(hostvars[item['item']]['ansible_' ~ hostvars[item['item']]['api_interface']]['ipv4']['address']) == -1"
|
||||||
|
|
||||||
|
- name: Checking free port for outward RabbitMQ
|
||||||
|
wait_for:
|
||||||
|
host: "{{ api_interface_address }}"
|
||||||
|
port: "{{ outward_rabbitmq_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when:
|
||||||
|
- enable_outward_rabbitmq | bool
|
||||||
|
- inventory_hostname in groups['outward-rabbitmq']
|
||||||
|
|
||||||
|
- name: Checking free port for outward RabbitMQ Management
|
||||||
|
wait_for:
|
||||||
|
host: "{{ api_interface_address }}"
|
||||||
|
port: "{{ outward_rabbitmq_management_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when:
|
||||||
|
- enable_outward_rabbitmq | bool
|
||||||
|
- inventory_hostname in groups['outward-rabbitmq']
|
||||||
|
|
||||||
|
- name: Checking free port for outward RabbitMQ Cluster
|
||||||
|
wait_for:
|
||||||
|
host: "{{ api_interface_address }}"
|
||||||
|
port: "{{ outward_rabbitmq_cluster_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when:
|
||||||
|
- enable_outward_rabbitmq | bool
|
||||||
|
- inventory_hostname in groups['outward-rabbitmq']
|
||||||
|
|
||||||
|
- name: Checking free port for outward RabbitMQ EPMD
|
||||||
|
wait_for:
|
||||||
|
host: "{{ api_interface_address }}"
|
||||||
|
port: "{{ outward_rabbitmq_epmd_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when:
|
||||||
|
- enable_outward_rabbitmq | bool
|
||||||
|
- inventory_hostname in groups['outward-rabbitmq']
|
||||||
|
|
||||||
|
- name: Check if all outward rabbit hostnames are resolvable
|
||||||
|
command: "getent ahostsv4 {{ hostvars[item]['ansible_hostname'] }}"
|
||||||
|
changed_when: false
|
||||||
|
register: outward_rabbitmq_hostnames
|
||||||
|
with_items: "{{ groups['outward-rabbitmq'] }}"
|
||||||
|
when:
|
||||||
|
- enable_outward_rabbitmq | bool
|
||||||
|
|
||||||
|
- fail: msg="Hostname has to resolve to IP address of api_interface"
|
||||||
|
with_items: "{{ outward_rabbitmq_hostnames.results }}"
|
||||||
|
when:
|
||||||
|
- enable_outward_rabbitmq | bool
|
||||||
|
- "item.stdout.find(hostvars[item['item']]['ansible_' ~ hostvars[item['item']]['api_interface']]['ipv4']['address']) == -1"
|
||||||
|
@ -1,17 +1,21 @@
|
|||||||
---
|
---
|
||||||
- name: Checking if rabbitmq container needs upgrading
|
- name: Checking if rabbitmq container needs upgrading
|
||||||
|
vars:
|
||||||
|
service_name: "rabbitmq"
|
||||||
|
service: "{{ rabbitmq_services[service_name] }}"
|
||||||
kolla_docker:
|
kolla_docker:
|
||||||
action: "compare_image"
|
action: "compare_image"
|
||||||
common_options: "{{ docker_common_options }}"
|
common_options: "{{ docker_common_options }}"
|
||||||
name: "rabbitmq"
|
name: "{{ project_name }}"
|
||||||
image: "{{ rabbitmq_image_full }}"
|
image: "{{ rabbitmq_image_full }}"
|
||||||
when: inventory_hostname in groups['rabbitmq']
|
environment: "{{ service.environment }}"
|
||||||
|
when: inventory_hostname in groups[role_rabbitmq_groups]
|
||||||
register: rabbitmq_differs
|
register: rabbitmq_differs
|
||||||
|
|
||||||
- include: config.yml
|
- include: config.yml
|
||||||
|
|
||||||
- name: Find gospel node
|
- name: Find gospel node
|
||||||
command: docker exec -t rabbitmq /usr/local/bin/rabbitmq_get_gospel_node
|
command: docker exec -t {{ project_name }} /usr/local/bin/rabbitmq_get_gospel_node
|
||||||
changed_when: "{{ (gospel_node.stdout | from_json).changed }}"
|
changed_when: "{{ (gospel_node.stdout | from_json).changed }}"
|
||||||
failed_when: "{{ (gospel_node.stdout | from_json).failed }}"
|
failed_when: "{{ (gospel_node.stdout | from_json).failed }}"
|
||||||
register: gospel_node
|
register: gospel_node
|
||||||
@ -21,7 +25,7 @@
|
|||||||
kolla_docker:
|
kolla_docker:
|
||||||
action: "stop_container"
|
action: "stop_container"
|
||||||
common_options: "{{ docker_common_options }}"
|
common_options: "{{ docker_common_options }}"
|
||||||
name: "rabbitmq"
|
name: "{{ project_name }}"
|
||||||
when:
|
when:
|
||||||
- rabbitmq_hostname != (gospel_node.stdout | from_json).hostname
|
- rabbitmq_hostname != (gospel_node.stdout | from_json).hostname
|
||||||
- rabbitmq_differs['result']
|
- rabbitmq_differs['result']
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
{"name": "/"}
|
{"name": "/"}
|
||||||
],
|
],
|
||||||
"users": [
|
"users": [
|
||||||
{"name": "{{ rabbitmq_user }}", "password": "{{ rabbitmq_password }}", "tags": "administrator"}
|
{"name": "{{ role_rabbitmq_user }}", "password": "{{ role_rabbitmq_password }}", "tags": "administrator"}
|
||||||
],
|
],
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{"user": "{{ rabbitmq_user }}", "vhost": "/", "configure": ".*", "write": ".*", "read": ".*"}
|
{"user": "{{ role_rabbitmq_user }}", "vhost": "/", "configure": ".*", "write": ".*", "read": ".*"}
|
||||||
],
|
],
|
||||||
"policies":[
|
"policies":[
|
||||||
{"vhost": "/", "name": "ha-all", "pattern": ".*", "apply-to": "all", "definition": {"ha-mode":"all"}, "priority":0}
|
{"vhost": "/", "name": "ha-all", "pattern": ".*", "apply-to": "all", "definition": {"ha-mode":"all"}, "priority":0}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
[
|
[
|
||||||
{version, 1},
|
{version, 1},
|
||||||
{nodes, [
|
{nodes, [
|
||||||
{% for host in groups['rabbitmq'] %}
|
{% for host in groups[role_rabbitmq_groups] %}
|
||||||
{'rabbit@{{ hostvars[host]['ansible_hostname'] }}', disc}
|
{'rabbit@{{ hostvars[host]['ansible_hostname'] }}', disc}
|
||||||
{%- if not loop.last -%},{%- endif %}
|
{%- if not loop.last -%},{%- endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
]},
|
]},
|
||||||
{gospel,
|
{gospel,
|
||||||
{node, 'rabbit@{{ hostvars[groups['rabbitmq'][0]]['ansible_hostname'] }}'}}
|
{node, 'rabbit@{{ hostvars[groups[role_rabbitmq_groups][0]]['ansible_hostname'] }}'}}
|
||||||
].
|
].
|
||||||
|
@ -4,7 +4,7 @@ RABBITMQ_BOOT_MODULE=rabbit_clusterer
|
|||||||
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-pa /usr/lib/rabbitmq/lib/{{ rabbitmq_version }}"
|
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-pa /usr/lib/rabbitmq/lib/{{ rabbitmq_version }}"
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
RABBITMQ_LOG_BASE=/var/log/kolla/rabbitmq
|
RABBITMQ_LOG_BASE=/var/log/kolla/{{ project_name }}
|
||||||
|
|
||||||
# TODO(sdake, vhosakot)
|
# TODO(sdake, vhosakot)
|
||||||
# erlang by default binds to wildcard (all interfaces) and can potentially
|
# erlang by default binds to wildcard (all interfaces) and can potentially
|
||||||
@ -16,4 +16,4 @@ RABBITMQ_LOG_BASE=/var/log/kolla/rabbitmq
|
|||||||
# https://bugs.launchpad.net/kolla/+bug/1562701
|
# https://bugs.launchpad.net/kolla/+bug/1562701
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1324922
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1324922
|
||||||
#export ERL_EPMD_ADDRESS={{ api_interface_address }}
|
#export ERL_EPMD_ADDRESS={{ api_interface_address }}
|
||||||
export ERL_EPMD_PORT={{ rabbitmq_epmd_port }}
|
export ERL_EPMD_PORT={{ role_rabbitmq_epmd_port }}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
[
|
[
|
||||||
{kernel, [
|
{kernel, [
|
||||||
{inet_dist_use_interface, {% raw %}{{% endraw %}{{ api_interface_address | regex_replace('\.', ',') }}}},
|
{inet_dist_use_interface, {% raw %}{{% endraw %}{{ api_interface_address | regex_replace('\.', ',') }}}},
|
||||||
{inet_dist_listen_min, {{ rabbitmq_cluster_port }}},
|
{inet_dist_listen_min, {{ role_rabbitmq_cluster_port }}},
|
||||||
{inet_dist_listen_max, {{ rabbitmq_cluster_port }}}
|
{inet_dist_listen_max, {{ role_rabbitmq_cluster_port }}}
|
||||||
]},
|
]},
|
||||||
{rabbit, [
|
{rabbit, [
|
||||||
{tcp_listeners, [
|
{tcp_listeners, [
|
||||||
{"{{ api_interface_address }}", {{ rabbitmq_port }}}
|
{"{{ api_interface_address }}", {{ role_rabbitmq_port }}}
|
||||||
]}{% if orchestration_engine == 'ANSIBLE' %},
|
]}{% if orchestration_engine == 'ANSIBLE' %},
|
||||||
{cluster_partition_handling, autoheal}
|
{cluster_partition_handling, autoheal}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
@ -14,7 +14,7 @@
|
|||||||
{rabbitmq_management, [
|
{rabbitmq_management, [
|
||||||
{listener, [
|
{listener, [
|
||||||
{ip, "{{ api_interface_address }}"},
|
{ip, "{{ api_interface_address }}"},
|
||||||
{port, {{ rabbitmq_management_port }}}
|
{port, {{ role_rabbitmq_management_port }}}
|
||||||
]},
|
]},
|
||||||
{load_definitions, "/etc/rabbitmq/definitions.json"}
|
{load_definitions, "/etc/rabbitmq/definitions.json"}
|
||||||
]}{% if orchestration_engine == 'ANSIBLE' %},
|
]}{% if orchestration_engine == 'ANSIBLE' %},
|
||||||
|
@ -33,3 +33,4 @@ haproxy_proto: "http"
|
|||||||
influxdb_proto: "http"
|
influxdb_proto: "http"
|
||||||
rabbitmq_proto: "http"
|
rabbitmq_proto: "http"
|
||||||
mariadb_proto: "tcp"
|
mariadb_proto: "tcp"
|
||||||
|
outward_rabbitmq_proto: "http"
|
||||||
|
@ -53,6 +53,12 @@
|
|||||||
username = "{{ rabbitmq_user }}"
|
username = "{{ rabbitmq_user }}"
|
||||||
password = "{{ rabbitmq_password }}"
|
password = "{{ rabbitmq_password }}"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if inventory_hostname in groups['outward-rabbitmq'] and enable_outward_rabbitmq | bool %}
|
||||||
|
[[inputs.rabbitmq]]
|
||||||
|
url = "{{ outward_rabbitmq_proto }}://{{ api_interface_address }}:{{ outward_rabbitmq_management_port }}"
|
||||||
|
username = "{{ outward_rabbitmq_user }}"
|
||||||
|
password = "{{ outward_rabbitmq_password }}"
|
||||||
|
{% endif %}
|
||||||
{% if inventory_hostname in groups['mariadb'] and enable_mariadb | bool %}
|
{% if inventory_hostname in groups['mariadb'] and enable_mariadb | bool %}
|
||||||
[[inputs.mysql]]
|
[[inputs.mysql]]
|
||||||
servers = ["{{ database_user }}:{{ database_password }}@{{ mariadb_proto }}({{ api_interface_address }}:{{ database_port }})/"]
|
servers = ["{{ database_user }}:{{ database_password }}@{{ mariadb_proto }}({{ api_interface_address }}:{{ database_port }})/"]
|
||||||
|
@ -165,8 +165,33 @@
|
|||||||
roles:
|
roles:
|
||||||
- { role: rabbitmq,
|
- { role: rabbitmq,
|
||||||
tags: rabbitmq,
|
tags: rabbitmq,
|
||||||
|
role_rabbitmq_cluster_cookie: '{{ rabbitmq_cluster_cookie }}',
|
||||||
|
role_rabbitmq_cluster_port: '{{ rabbitmq_cluster_port }}',
|
||||||
|
role_rabbitmq_epmd_port: '{{ rabbitmq_epmd_port }}',
|
||||||
|
role_rabbitmq_groups: rabbitmq,
|
||||||
|
role_rabbitmq_management_port: '{{ rabbitmq_management_port }}',
|
||||||
|
role_rabbitmq_password: '{{ rabbitmq_password }}',
|
||||||
|
role_rabbitmq_port: '{{ rabbitmq_port }}',
|
||||||
|
role_rabbitmq_user: '{{ rabbitmq_user }}',
|
||||||
when: enable_rabbitmq | bool }
|
when: enable_rabbitmq | bool }
|
||||||
|
|
||||||
|
- name: Apply role rabbitmq (outward)
|
||||||
|
gather_facts: false
|
||||||
|
hosts: outward-rabbitmq
|
||||||
|
roles:
|
||||||
|
- { role: rabbitmq,
|
||||||
|
tags: rabbitmq,
|
||||||
|
project_name: outward_rabbitmq,
|
||||||
|
role_rabbitmq_cluster_cookie: '{{ outward_rabbitmq_cluster_cookie }}',
|
||||||
|
role_rabbitmq_cluster_port: '{{ outward_rabbitmq_cluster_port }}',
|
||||||
|
role_rabbitmq_epmd_port: '{{ outward_rabbitmq_epmd_port }}',
|
||||||
|
role_rabbitmq_groups: outward-rabbitmq,
|
||||||
|
role_rabbitmq_management_port: '{{ outward_rabbitmq_management_port }}',
|
||||||
|
role_rabbitmq_password: '{{ outward_rabbitmq_password }}',
|
||||||
|
role_rabbitmq_port: '{{ outward_rabbitmq_port }}',
|
||||||
|
role_rabbitmq_user: '{{ outward_rabbitmq_user }}',
|
||||||
|
when: enable_outward_rabbitmq | bool }
|
||||||
|
|
||||||
- name: Apply role etcd
|
- name: Apply role etcd
|
||||||
gather_facts: false
|
gather_facts: false
|
||||||
hosts: etcd
|
hosts: etcd
|
||||||
|
@ -180,6 +180,8 @@ gnocchi_user_id:
|
|||||||
####################
|
####################
|
||||||
rabbitmq_password:
|
rabbitmq_password:
|
||||||
rabbitmq_cluster_cookie:
|
rabbitmq_cluster_cookie:
|
||||||
|
outward_rabbitmq_password:
|
||||||
|
outward_rabbitmq_cluster_cookie:
|
||||||
|
|
||||||
####################
|
####################
|
||||||
# HAProxy options
|
# HAProxy options
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- Add a new 'outward facing' rabbitmq, for services
|
||||||
|
which require a user facing message queue such as
|
||||||
|
Murano or Trove.
|
Loading…
Reference in New Issue
Block a user