From e7441a42125c38c851e7c20ea8134c3b557a27e8 Mon Sep 17 00:00:00 2001
From: Jeffrey Zhang <jeffrey.zhang@99cloud.net>
Date: Wed, 11 May 2016 20:21:52 +0800
Subject: [PATCH] Configure the rabbitmq ha policy in config file

Closes-Bug: #1580884
Change-Id: Ief5917d48dbf6abe4a5861e73b24d534b889bd52
---
 ansible/roles/rabbitmq/tasks/config.yml            |  3 ++-
 .../roles/rabbitmq/templates/definitions.json.j2   | 14 ++++++++++++++
 .../roles/rabbitmq/templates/rabbitmq.config.j2    |  5 ++---
 ansible/roles/rabbitmq/templates/rabbitmq.json.j2  |  6 ++++++
 4 files changed, 24 insertions(+), 4 deletions(-)
 create mode 100644 ansible/roles/rabbitmq/templates/definitions.json.j2

diff --git a/ansible/roles/rabbitmq/tasks/config.yml b/ansible/roles/rabbitmq/tasks/config.yml
index 28b29ea97..e104fb8bc 100644
--- a/ansible/roles/rabbitmq/tasks/config.yml
+++ b/ansible/roles/rabbitmq/tasks/config.yml
@@ -14,7 +14,7 @@
   with_items:
     - "rabbitmq"
 
-- name: Copying over rabbitmq*.conf
+- name: Copying over rabbitmq configs
   template:
     src: "{{ item }}.j2"
     dest: "{{ node_config_directory }}/rabbitmq/{{ item }}"
@@ -22,3 +22,4 @@
      - "rabbitmq-env.conf"
      - "rabbitmq.config"
      - "rabbitmq-clusterer.config"
+     - "definitions.json"
diff --git a/ansible/roles/rabbitmq/templates/definitions.json.j2 b/ansible/roles/rabbitmq/templates/definitions.json.j2
new file mode 100644
index 000000000..fdb7267b5
--- /dev/null
+++ b/ansible/roles/rabbitmq/templates/definitions.json.j2
@@ -0,0 +1,14 @@
+{
+  "vhosts": [
+    {"name": "/"}
+  ],
+  "users": [
+    {"name": "{{ rabbitmq_user }}", "password": "{{ rabbitmq_password }}", "tags": "administrator"}
+  ],
+  "permissions": [
+    {"user": "{{ rabbitmq_user }}", "vhost": "/", "configure": ".*", "write": ".*", "read": ".*"}
+  ],
+  "policies":[
+    {"vhost": "/", "name": "ha-all", "pattern": ".*", "apply-to": "all", "definition": {"ha-mode":"all"}, "priority":0}
+  ]
+}
diff --git a/ansible/roles/rabbitmq/templates/rabbitmq.config.j2 b/ansible/roles/rabbitmq/templates/rabbitmq.config.j2
index 50c931ef4..7db5f020d 100644
--- a/ansible/roles/rabbitmq/templates/rabbitmq.config.j2
+++ b/ansible/roles/rabbitmq/templates/rabbitmq.config.j2
@@ -8,15 +8,14 @@
     {tcp_listeners, [
       {"{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}", {{ rabbitmq_port }}}
     ]},
-    {default_user, <<"{{ rabbitmq_user }}">>},
-    {default_pass, <<"{{ rabbitmq_password }}">>},
     {cluster_partition_handling, autoheal}
   ]},
   {rabbitmq_management, [
     {listener, [
       {ip, "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"},
       {port, {{ rabbitmq_management_port }}}
-    ]}
+    ]},
+    {load_definitions, "/etc/rabbitmq/definitions.json"}
   ]},
   {rabbitmq_clusterer, [{config, "/etc/rabbitmq/rabbitmq-clusterer.config"}]}
 ].
diff --git a/ansible/roles/rabbitmq/templates/rabbitmq.json.j2 b/ansible/roles/rabbitmq/templates/rabbitmq.json.j2
index 9aef3c691..4e99cc218 100644
--- a/ansible/roles/rabbitmq/templates/rabbitmq.json.j2
+++ b/ansible/roles/rabbitmq/templates/rabbitmq.json.j2
@@ -18,6 +18,12 @@
             "dest": "/etc/rabbitmq/rabbitmq-clusterer.config",
             "owner": "rabbitmq",
             "perm": "0600"
+        },
+        {
+            "source": "{{ container_config_directory }}/definitions.json",
+            "dest": "/etc/rabbitmq/definitions.json",
+            "owner": "rabbitmq",
+            "perm": "0600"
         }
     ]
 }
-- 
GitLab