type: direct
routing_key: logstash
tags: 'ha-mode=all,ha-sync-mode=automatic'
+rabbitmq_debian_repo: deb http://www.rabbitmq.com/debian/ testing main
+rabbitmq_debian_repo_key: http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
rabbitmq_master: [] #defines the inventory host that should be considered master...define here or in group_vars/group
+rabbitmq_users: #define admin user to create in order to login to WebUI
+ - name: rabbitmqadmin
+ password: rabbitmqadmin
+ vhost: /
+ configure_priv: '.*'
+ read_priv: '.*'
+ write_priv: '.*'
+ tags: 'administrator' #define comma separated list of tags to assign to user....management,policymaker,monitoring,administrator...required for management plugin. https://www.rabbitmq.com/management.html
--- /dev/null
+{install_date: 'Mon Nov 9 03:40:19 2015', version: ''}
---
- name: debian | adding RabbitMQ public GPG key to the apt repo
- apt_key: url=http://www.rabbitmq.com/rabbitmq-signing-key-public.asc state=present
+ apt_key:
+ url: "{{ rabbitmq_debian_repo_key }}"
+ state: present
- name: debian | adding RabbitMQ repo
- apt_repository: repo='deb http://www.rabbitmq.com/debian/ testing main' update_cache=no state=present
+ apt_repository:
+ repo: "{{ rabbitmq_debian_repo }}"
+ state: present
- name: debian | installing RabbitMQ server
- apt: name={{ item }} state=present
+ apt:
+ name: "{{ item }}"
+ state: present
with_items:
- rabbitmq-server
- name: debian | enabling the RabbitMQ Management Console
- rabbitmq_plugin: names=rabbitmq_management state=enabled
+ rabbitmq_plugin:
+ names: rabbitmq_management
+ state: enabled
notify: restart rabbitmq-server
- name: debian | ensuring that the RabbitMQ service is running
- service: name=rabbitmq-server state=started enabled=yes
+ service:
+ name: rabbitmq-server
+ state: started
+ enabled: yes
- include: rabbitmq_ha_config.yml
when: config_rabbitmq_ha and enable_rabbitmq_clustering
+
+- include: rabbitmq_users.yml
command: rabbitmqctl reset
- name: rabbitmq_clustering | stopping rabbitmq-server
- service: name=rabbitmq-server state=stopped
+ service:
+ name: rabbitmq-server
+ state: stopped
#- name: grabbing erlang cookie
# shell: cat /var/lib/rabbitmq/.erlang.cookie
# when: inventory_hostname == "{{ rabbitmq_master }}"
- name: rabbitmq_clustering | copy erlang cookie
- template: src=erlang.cookie.j2 dest={{ erlang_cookie_file }} owner=rabbitmq group=rabbitmq mode=0400 backup=yes
+ template:
+ src: erlang.cookie.j2
+ dest: "{{ erlang_cookie_file }}"
+ owner: rabbitmq
+ group: rabbitmq
+ mode: 0400
+ backup: yes #backing up in case the need to recover
# when: inventory_hostname != "{{ rabbitmq_master }}"
- name: rabbitmq_clustering | restarting rabbitmq-server on master
- service: name=rabbitmq-server state=restarted
+ service:
+ name: rabbitmq-server
+ state: restarted
when: inventory_hostname == "{{ rabbitmq_master }}"
- name: rabbitmq_clustering | starting rabbitmq app on master
when: inventory_hostname != "{{ rabbitmq_master }}"
- name: rabbitmq_clustering | restarting rabbitmq-server
- service: name=rabbitmq-server state=restarted
+ service:
+ name: rabbitmq-server
+ state: restarted
when: inventory_hostname != "{{ rabbitmq_master }}"
- name: rabbitmq_clustering | stopping rabbitmq app
when: inventory_hostname != "{{ rabbitmq_master }}"
- name: rabbitmq_clustering | marking as clustered
- file: path=/etc/rabbitmq/clustered state=touch
+ file:
+ path: /etc/rabbitmq/clustered
+ state: touch
when: cluster_master.changed or cluster_joined.changed
---
+- name: rabbitmq_ha_config | checking if rabbitmqadmin is installed
+ stat:
+ path: /usr/sbin/rabbitmqadmin
+ register: rabbitmqadmin_check
+
- name: rabbitmq_ha_config | install rabbitMQ admin
- shell: wget http://guest:guest@localhost:55672/cli/rabbitmqadmin
+ shell: wget http://guest:guest@localhost:15672/cli/rabbitmqadmin
+ when: not rabbitmqadmin_check.stat.exists
- name: rabbitmq_ha_config | moving the rabbitMQ Admin
shell: mv rabbitmqadmin /usr/sbin
+ when: not rabbitmqadmin_check.stat.exists
- name: rabbitmq_ha_config | making executable rabbitMQ Admin
shell: chmod +x /usr/sbin/rabbitmqadmin
notify: restart rabbitmq-server
+ when: not rabbitmqadmin_check.stat.exists
- name: rabbitmq_ha_config | creating queue(s)
command: rabbitmqadmin declare queue name={{ item.queue_name }} durable={{ item.durable|lower }}
with_items: rabbitmq_config
- name: rabbitmq_ha_config | setting up ha on queue(s)
- rabbitmq_policy: name='ha-all' pattern='{{ item.queue_name }}' tags="{{ item.tags }}" state=present
+ rabbitmq_policy:
+ name: "ha-all"
+ pattern: "{{ item.queue_name }}"
+ tags: "{{ item.tags }}"
+ state: present
run_once: true
with_items: rabbitmq_config
command: rabbitmqadmin declare exchange name={{ item.exchange_name }} type={{ item.type }}
run_once: true
with_items: rabbitmq_config
+ when: item.exchange_name is defined
- name: rabbitmq_ha_config | creating binding(s)
command: rabbitmqadmin declare binding source={{ item.exchange_name }} destination_type="queue" destination={{ item.queue_name }} routing_key={{ item.routing_key }}
run_once: true
with_items: rabbitmq_config
+ when: item.exchange_name is defined
--- /dev/null
+---
+- name: rabbitmq_users | creating 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 }}"
+ state: present
+ with_items: rabbitmq_users
+ when: (enable_rabbitmq_clustering is defined and not enable_rabbitmq_clustering) or enable_rabbitmq_clustering is not defined
+
+- name: rabbitmq_users | creating 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 }}"
+ state: present
+ run_once: yes
+ with_items: rabbitmq_users
+ when: (enable_rabbitmq_clustering is defined and enable_rabbitmq_clustering)