]> git.immae.eu Git - github/fretlink/ansible-rabbitmq.git/commitdiff
Merge pull request #23 from paulrbr-fl/clustering-admin-tasks
authorLarry Smith Jr <mrlesmithjr@gmail.com>
Thu, 20 Dec 2018 19:58:48 +0000 (14:58 -0500)
committerGitHub <noreply@github.com>
Thu, 20 Dec 2018 19:58:48 +0000 (14:58 -0500)
clustering: make sure to delegate admin tasks to the master node

defaults/main.yml
tasks/main.yml
tasks/rabbitmq_users.yml
tasks/rabbitmq_vhosts.yml [new file with mode: 0644]

index 4ea3ee0cea2d5cf79eff3e1635ba9490159be34e..e874af124423ac474a4b75d89b0fd4ccd8be961f 100644 (file)
@@ -57,6 +57,11 @@ rabbitmq_redhat_package: "rabbitmq-server-{{ rabbitmq_redhat_version }}-1.noarch
 rabbitmq_redhat_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v{{ rabbitmq_redhat_version }}"
 rabbitmq_redhat_version: 3.6.1
 
+# Define extra vhosts to be created
+rabbitmq_extra_vhosts: []
+# - name: /
+#   state: present
+
 # Define admin user to create in order to login to WebUI
 rabbitmq_users:
   - name: rabbitmqadmin
index 1ef08f0a7462c080a2a51ce9571fbd1ed964ebc7..a9dc4d23896c56984d9a7cb5c9e270b7f613467e 100644 (file)
@@ -26,6 +26,9 @@
         rabbitmq_enable_clustering and
         not clustered['stat']['exists']
 
+- include: rabbitmq_vhosts.yml
+  when: rabbitmq_extra_vhosts is defined
+
 - include: rabbitmq_ha_config.yml
   when: >
         rabbitmq_config_ha and
index 083c70471016c94a87fea6126258500ec9d6fa18..7bba65ec5a840ef4915551520737adc1f6b1d1a6 100644 (file)
@@ -3,11 +3,12 @@
   rabbitmq_user:
     name: "{{ item['name'] }}"
     password: "{{ item['password'] }}"
-    vhost: "{{ item['vhost'] }}"
-    configure_priv: "{{ item['configure_priv'] }}"
-    read_priv: "{{ item['read_priv'] }}"
-    write_priv: "{{ item['write_priv'] }}"
-    tags: "{{ item['tags'] }}"
+    vhost: "{{ item['vhost']|default(omit) }}"
+    configure_priv: "{{ item['configure_priv']|default(omit) }}"
+    read_priv: "{{ item['read_priv']|default(omit) }}"
+    write_priv: "{{ item['write_priv']|default(omit) }}"
+    tags: "{{ item['tags']|default(omit) }}"
+    permissions: "{{ item['permissions']|default(omit) }}"
     state: present
   become: true
   with_items: "{{ rabbitmq_users }}"
   rabbitmq_user:
     name: "{{ item['name'] }}"
     password: "{{ item['password'] }}"
-    vhost: "{{ item['vhost'] }}"
-    configure_priv: "{{ item['configure_priv'] }}"
-    read_priv: "{{ item['read_priv'] }}"
-    write_priv: "{{ item['write_priv'] }}"
-    tags: "{{ item['tags'] }}"
+    vhost: "{{ item['vhost']|default(omit) }}"
+    configure_priv: "{{ item['configure_priv']|default(omit) }}"
+    read_priv: "{{ item['read_priv']|default(omit) }}"
+    write_priv: "{{ item['write_priv']|default(omit) }}"
+    tags: "{{ item['tags']|default(omit) }}"
+    permissions: "{{ item['permissions']|default(omit) }}"
     state: present
   run_once: yes
   delegate_to: "{{ rabbitmq_master }}"
diff --git a/tasks/rabbitmq_vhosts.yml b/tasks/rabbitmq_vhosts.yml
new file mode 100644 (file)
index 0000000..a02af62
--- /dev/null
@@ -0,0 +1,25 @@
+---
+- name: rabbitmq_extra_vhosts | Create vhosts
+  rabbitmq_vhost:
+    name: "{{ item['name'] }}"
+    state: "{{ item['state'] }}"
+  with_items: "{{ rabbitmq_extra_vhosts }}"
+  run_once: "{{ rabbitmq_enable_clustering is defined and rabbitmq_enable_clustering }}"
+  register: rabbitmq_created_vhosts
+
+- name: rabbitmq_extra_vhosts | Check guest administrator is present
+  command: rabbitmqctl -q list_users
+  become: true
+  run_once: "{{ rabbitmq_enable_clustering is defined and rabbitmq_enable_clustering }}"
+  when: rabbitmq_created_vhosts.changed
+  changed_when: false
+  register: rabbitmq_existing_users
+
+- name: rabbitmq_extra_vhosts | Give access to new vhosts to guest administrator
+  command: "rabbitmqctl -q set_permissions -p {{ item['name'] }} guest '.*' '.*' '.*'"
+  become: true
+  run_once: "{{ rabbitmq_enable_clustering is defined and rabbitmq_enable_clustering }}"
+  with_items: "{{ rabbitmq_created_vhosts.results|selectattr('changed')|list }}"
+  when:
+    - item['state'] == 'present'
+    - rabbitmq_existing_users.stdout_lines | map('regex_search', '^guest\\s\\[.*administrator.*\\]$') | list | difference([None]) | length > 0