mirror of
https://pagure.io/fedora-infra/ansible.git
synced 2026-04-01 09:50:18 +08:00
118 lines
3.8 KiB
YAML
118 lines
3.8 KiB
YAML
---
|
|
|
|
# Ensure a user, queue, and bindings for that queue exist in RabbitMQ.
|
|
# This is intended to be something most applications can use, but if you need
|
|
# more flexibility, just use the rabbitmq_* modules directly.
|
|
#
|
|
# Required parameters:
|
|
#
|
|
# - username (str): the username to create in RabbitMQ, which should match the
|
|
# CN of the certificate.
|
|
# - queue_name (str): The name of the queue to create. This must be prefixed
|
|
# with your username. For example, with a username of
|
|
# "bodhi", your queue could be named "bodhi_masher".
|
|
# - routing_keys (list): A list of strings to use as routing keys.
|
|
#
|
|
# Optional parameters:
|
|
#
|
|
# - sent_topics (str): A regular expression that must match the topic when a
|
|
# message is published by this user.
|
|
# - thresholds (dict): A dictionary with two keys: "warning" and "critical".
|
|
# The values are numbers. Generate an alert in Nagios if
|
|
# the number of messages go above these values.
|
|
|
|
- name: Validate queue name {{ queue_name }}
|
|
assert:
|
|
that:
|
|
- "queue_name.startswith(username)"
|
|
fail_msg: "Your queue name must be prefixed with your username"
|
|
when: username is defined
|
|
tags:
|
|
- fedora-messaging
|
|
- rabbitmq_cluster
|
|
|
|
- include_role:
|
|
name: rabbit/user
|
|
vars:
|
|
publish_only: false
|
|
when: username is defined
|
|
tags:
|
|
- fedora-messaging
|
|
- rabbitmq_cluster
|
|
|
|
- name: Create the {{ queue_name }} queue in RabbitMQ
|
|
delegate_to: "{{ rabbitmq_server }}"
|
|
rabbitmq_queue:
|
|
name: "{{ queue_name }}"
|
|
vhost: "{{ vhost }}"
|
|
auto_delete: no
|
|
durable: yes
|
|
message_ttl: "{{ message_ttl }}"
|
|
max_priority: "{{ max_priority }}"
|
|
state: present
|
|
login_user: admin
|
|
login_password: "{{ (env == 'production')|ternary(rabbitmq_admin_password_production, rabbitmq_admin_password_staging) }}"
|
|
tags:
|
|
- fedora-messaging
|
|
- rabbitmq_cluster
|
|
|
|
- name: Bind the {{ queue_name }} queue to the amq.topic exchange
|
|
delegate_to: "{{ rabbitmq_server }}"
|
|
rabbitmq_binding:
|
|
name: "amq.topic"
|
|
destination: "{{ queue_name }}"
|
|
destination_type: queue
|
|
routing_key: "{{ item }}"
|
|
vhost: "{{ vhost }}"
|
|
state: present
|
|
login_user: admin
|
|
login_password: "{{ (env == 'production')|ternary(rabbitmq_admin_password_production, rabbitmq_admin_password_staging) }}"
|
|
loop: "{{ routing_keys }}"
|
|
when: routing_keys is defined
|
|
tags:
|
|
- fedora-messaging
|
|
- rabbitmq_cluster
|
|
|
|
# This can be removed when we're done with fedmsg and the bridges are retired.
|
|
- name: Bind the {{ queue_name }} queue to the zmq.topic exchange
|
|
delegate_to: "{{ rabbitmq_server }}"
|
|
rabbitmq_binding:
|
|
name: "zmq.topic"
|
|
destination: "{{ queue_name }}"
|
|
destination_type: queue
|
|
routing_key: "{{ item }}"
|
|
vhost: "{{ vhost }}"
|
|
state: present
|
|
login_user: admin
|
|
login_password: "{{ (env == 'production')|ternary(rabbitmq_admin_password_production, rabbitmq_admin_password_staging) }}"
|
|
loop: "{{ routing_keys }}"
|
|
when: routing_keys is defined
|
|
tags:
|
|
- fedora-messaging
|
|
- rabbitmq_cluster
|
|
|
|
- name: Monitor the {{ queue_name }} queue in Nagios (NRPE)
|
|
when: thresholds and env == "production"
|
|
delegate_to: "{{ rabbitmq_server }}"
|
|
template:
|
|
src: nrpe.cfg.j2
|
|
dest: /etc/nrpe.d/check_rabbitmq_queue_{{ queue_name }}.cfg
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
notify: restart nrpe on rabbitmq
|
|
tags:
|
|
- fedora-messaging
|
|
- rabbitmq_cluster
|
|
|
|
- name: Monitor the {{ queue_name }} queue in Nagios
|
|
when: thresholds and env == "production"
|
|
delegate_to: "{{ nagios_server }}"
|
|
template:
|
|
src: nagios.cfg.j2
|
|
dest: /etc/nagios/services/rabbitmq-queue-{{ queue_name }}.cfg
|
|
# notify: restart nagios on noc
|
|
tags:
|
|
- fedora-messaging
|
|
- rabbitmq_cluster
|