aboutsummaryrefslogtreecommitdiff
path: root/ansible
diff options
context:
space:
mode:
Diffstat (limited to 'ansible')
-rw-r--r--ansible/roles/message-broker/defaults/main.yml22
-rw-r--r--ansible/roles/message-broker/tasks/bootstrap.yml37
-rw-r--r--ansible/roles/message-broker/tasks/config.yml16
-rw-r--r--ansible/roles/message-broker/tasks/main.yml11
-rw-r--r--ansible/roles/message-broker/tasks/start.yml11
-rw-r--r--ansible/roles/message-broker/templates/rabbitmq-env.conf.j21
-rw-r--r--ansible/roles/message-broker/templates/rabbitmq.config.j29
-rw-r--r--ansible/roles/start.yml2
8 files changed, 102 insertions, 7 deletions
diff --git a/ansible/roles/message-broker/defaults/main.yml b/ansible/roles/message-broker/defaults/main.yml
new file mode 100644
index 000000000..67dd88364
--- /dev/null
+++ b/ansible/roles/message-broker/defaults/main.yml
@@ -0,0 +1,22 @@
+---
+project_name: "rabbitmq"
+
+####################
+# Docker
+####################
+docker_message_broker_registry: "{{ docker_registry }}"
+docker_message_broker_namespace: "{{ docker_namespace }}"
+kolla_message_broker_base_distro: "{{ kolla_base_distro }}"
+kolla_message_broker_install_type: "{{ kolla_install_type }}"
+kolla_message_broker_container_name: "rabbitmq"
+
+docker_message_broker_image: "{{ docker_message_broker_registry }}{{ docker_message_broker_namespace }}/{{ kolla_message_broker_base_distro }}-{{ kolla_message_broker_install_type }}-{{ kolla_message_broker_container_name }}"
+docker_message_broker_tag: "{{ openstack_release }}"
+docker_message_broker_image_full: "{{ docker_message_broker_image }}:{{ docker_message_broker_tag }}"
+
+
+####################
+# Message-Broker
+####################
+rabbitmq_user: "openstack"
+rabbitmq_cluster_name: "openstack"
diff --git a/ansible/roles/message-broker/tasks/bootstrap.yml b/ansible/roles/message-broker/tasks/bootstrap.yml
new file mode 100644
index 000000000..3cc2d51e5
--- /dev/null
+++ b/ansible/roles/message-broker/tasks/bootstrap.yml
@@ -0,0 +1,37 @@
+---
+# TODO(SamYaple): Improve check with a custom docker module to check if alive
+- name: Checking if a rabbitmq_data exists
+ command: docker inspect rabbitmq_data
+ register: exists
+ changed_when: False
+ failed_when: False
+ always_run: True
+
+- include: ../../start.yml
+ vars:
+ container_command: "/bin/sleep infinity"
+ container_image: "{{ docker_message_broker_image_full }}"
+ container_name: "rabbitmq_data"
+ container_volumes:
+ - "/var/lib/rabbitmq/"
+
+- include: ../../start.yml
+ vars:
+ container_detach: "False"
+ container_environment:
+ KOLLA_BOOTSTRAP:
+ KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
+ RABBITMQ_CLUSTER_COOKIE: "{{ rabbitmq_cluster_cookie }}"
+ container_image: "{{ docker_message_broker_image_full }}"
+ container_name: "rabbitmq_bootstrap"
+ container_volumes:
+ - "{{ node_config_directory }}/rabbitmq/:/opt/kolla/rabbitmq/:ro"
+ container_volumes_from:
+ - "rabbitmq_data"
+ when: exists.rc != 0
+
+- name: Cleaning up boostrap container
+ docker:
+ image: "{{ docker_message_broker_image_full }}"
+ name: "rabbitmq_bootstrap"
+ state: "absent"
diff --git a/ansible/roles/message-broker/tasks/config.yml b/ansible/roles/message-broker/tasks/config.yml
new file mode 100644
index 000000000..8c6caf5e5
--- /dev/null
+++ b/ansible/roles/message-broker/tasks/config.yml
@@ -0,0 +1,16 @@
+---
+- name: Ensuring config directory exists
+ file:
+ path: "{{ node_config_directory }}/rabbitmq/"
+ state: "directory"
+ recurse: "yes"
+
+- name: Copying over config(s)
+ template:
+ src: "{{ item.src }}"
+ dest: "{{ item.dest }}"
+ with_items:
+ - { src: "roles/message-broker/templates/rabbitmq-env.conf.j2",
+ dest: "{{ node_config_directory }}/rabbitmq/rabbitmq-env.conf" }
+ - { src: "roles/message-broker/templates/rabbitmq.config.j2",
+ dest: "{{ node_config_directory }}/rabbitmq/rabbitmq.config" }
diff --git a/ansible/roles/message-broker/tasks/main.yml b/ansible/roles/message-broker/tasks/main.yml
index c7a0fc830..98daa4021 100644
--- a/ansible/roles/message-broker/tasks/main.yml
+++ b/ansible/roles/message-broker/tasks/main.yml
@@ -1,7 +1,6 @@
---
-- name: Bringing up rabbitmq service(s)
- docker_compose:
- project_name: rabbitmq
- compose_file: "{{ koalla_directory }}/compose/rabbitmq.yml"
- command: up
- no_recreate: true
+- include: config.yml
+
+- include: bootstrap.yml
+
+- include: start.yml
diff --git a/ansible/roles/message-broker/tasks/start.yml b/ansible/roles/message-broker/tasks/start.yml
new file mode 100644
index 000000000..4a75e0d94
--- /dev/null
+++ b/ansible/roles/message-broker/tasks/start.yml
@@ -0,0 +1,11 @@
+---
+- include: ../../start.yml
+ vars:
+ container_environment:
+ KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
+ container_image: "{{ docker_message_broker_image_full }}"
+ container_name: "rabbitmq"
+ container_volumes:
+ - "{{ node_config_directory }}/rabbitmq/:/opt/kolla/rabbitmq/:ro"
+ container_volumes_from:
+ - "rabbitmq_data"
diff --git a/ansible/roles/message-broker/templates/rabbitmq-env.conf.j2 b/ansible/roles/message-broker/templates/rabbitmq-env.conf.j2
new file mode 100644
index 000000000..8921f227e
--- /dev/null
+++ b/ansible/roles/message-broker/templates/rabbitmq-env.conf.j2
@@ -0,0 +1 @@
+RABBITMQ_NODENAME=rabbit
diff --git a/ansible/roles/message-broker/templates/rabbitmq.config.j2 b/ansible/roles/message-broker/templates/rabbitmq.config.j2
new file mode 100644
index 000000000..e51d0c56d
--- /dev/null
+++ b/ansible/roles/message-broker/templates/rabbitmq.config.j2
@@ -0,0 +1,9 @@
+[
+ {rabbit, [
+ {cluster_nodes, [{% for host in groups['database'] %}'rabbit@{{ hostvars[host]['ansible_hostname'] }}'{% if not loop.last %},{% endif %}{% endfor %}]},
+ {default_user, <<"{{ rabbitmq_user }}">>},
+ {default_pass, <<"{{ rabbitmq_password }}">>}
+ ]}
+].
+% EOF
+
diff --git a/ansible/roles/start.yml b/ansible/roles/start.yml
index 8aadfb3fc..4925ba363 100644
--- a/ansible/roles/start.yml
+++ b/ansible/roles/start.yml
@@ -13,7 +13,7 @@
docker:
command: "{{ container_command | default(None) }}"
detach: "{{ container_detach | default('True') }}"
- env: "{{ container_environment | default(None) }}"
+ env: "{{ container_environment | default({}) }}"
docker_api_version: "{{ docker_api_version }}"
image: "{{ container_image }}"
insecure_registry: "{{ docker_insecure_registry }}"