Skip to content

Instantly share code, notes, and snippets.

@radimih
Created May 31, 2022 11:21
Show Gist options
  • Save radimih/3cb5ff4de8c102307b9e7702533b8955 to your computer and use it in GitHub Desktop.
Save radimih/3cb5ff4de8c102307b9e7702533b8955 to your computer and use it in GitHub Desktop.
Ansible playbook for RabbitMQ
- hosts:
- rabbitmq
gather_facts: false roles:
- role: dockerized-service
vars:
service_name: rabbitmq
service_port: 5672
management_plugin_port: 15672
dest: /opt/{{ service_name }}
compose: |
services:
service:
# Требуется обязательно задать имя хоста внутри контейнера,
# чтобы оно было всегда одинаковым при каждом запуске.
# RabbitMQ использует hostname в имени файла очереди.
# ВНИМАНИЕ! Имя хоста ни на что не влияет вне контейнера.
hostname: rabbit
image: rabbitmq:3.9-management-alpine
restart: unless-stopped
environment:
RABBITMQ_DEFAULT_USER: "{{ RABBITMQ.admin.username }}"
RABBITMQ_DEFAULT_PASS: "{{ RABBITMQ.admin.password }}"
RABBITMQ_APPUSER_NAME: "{{ RABBITMQ.appuser.username }}"
RABBITMQ_APPUSER_PASS: "{{ RABBITMQ.appuser.password }}"
RABBITMQ_PID_FILE: /var/run/rabbitmq.pid
# Добавить в RabbitMQ пользователя $RABBITMQ_APPUSER_NAME или изменить его пароль в момент запуска
# контейнера. Эти действия производятся в фоновом процессе, пока запускается сам сервер RabbitMQ.
# Также при необходимости обновляется пароль администратора RabbitMQ $RABBITMQ_DEFAULT_USER.
entrypoint: |
/bin/sh -c '\
(\
echo "------>>> Start background subproccess"; \
rabbitmqctl wait --timeout 30 $${RABBITMQ_PID_FILE}; \
rabbitmqctl add_user $${RABBITMQ_APPUSER_NAME} "$${RABBITMQ_APPUSER_PASS}" 2> /dev/null || \
rabbitmqctl change_password $${RABBITMQ_APPUSER_NAME} "$${RABBITMQ_APPUSER_PASS}"; \
rabbitmqctl change_password $${RABBITMQ_DEFAULT_USER} "$${RABBITMQ_DEFAULT_PASS}"; \
rabbitmqctl set_permissions $${RABBITMQ_APPUSER_NAME} ".*" ".*" ".*"; \
echo "------>>> Stop background subproccess" \
) & \
echo "--->>> Start RabbitMQ"; \
exec rabbitmq-server'
ports:
- "{{ service_port }}:5672"
- "{{ management_plugin_port }}:15672"
volumes:
- data:/var/lib/rabbitmq
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
start_period: 10s
interval: 10s
timeout: 3s
retries: 10
volumes:
data:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment