Simeon Simeonov
Skaffe seg maskin og SSL sertifikat(er)
Bruke Ansible
Opprette administrator-bruker og slette guest-brukeren
Sette rettigheter og opprette entiteter
Vi bruker repo UAIT/int-ansible-hosts
Etter å ha installert Ansible på lokalmaskina gjør vi følgende:
git clone ssh://git@bitbucket.usit.uio.no:7999/uait/int-ansible-hosts.git
cd int-ansible-hosts
ansible-playbook --ask-become-pass -v --extra-vars '{"hosts": "mq-hostname"}' rabbitmq_playbook.yml
RabbitMQ skal nå være installert og tilgjengelig på https://mq-hostname
Brukeren guest med passord guest vil eksistere etter at Ansible har kjørt
I tillegg til webgrensesnittet, kan en bruke rabbitmqctl
rabbitmqctl list_users (Lister alle eksisterende RabbitMQ-brukere)
rabbitmqctl add_user rmq_admin <passord> (Legger til dedikert admin bruker rmq_admin)
rabbitmqctl set_user_tags rmq_admin administrator (Gir administrator rolle til rmq_admin)
rabbitmqctl delete_user guest (Sletter brukeren guest)
vhost fungerer som en beholder (container) for RabbitMQ/AMQP objekter. Nok igjen kan en velge mellom webgrensesnitt og rabbitmqctl
rabbitmqctl list_vhosts (Lister alle eksisterende vhosts)
rabbitmqctl add_vhost /no/uio/integration (Oppretter vhost med navn /no/uio/integration)
RabbitMQ implementerer 2 rettighetsnivåer:
RabbitMQ definerer 3 typer operasjoner:
configure - opprette / slette entiteter eller endre deres oppførsel
write - skrive melding til en entitet
read - lese melding fra entitet
RabbitMQ bruker regular expressions til å definere rettigheter
rabbitmqctl add_user cerebrum <passord>
rabbitmqctl add_user uio_ad_microservice <passord>
rabbitmqctl set_permissions -p /no/uio/integration cerebrum "^$" "^ex_.*" "^$"
rabbitmqctl set_permissions -p /no/uio/integration uio_ad_microservice "^q_ad_ms_.*" "^q_ad_ms_.*" "^(ex_messages|q_ad_ms_.*)$"
Køer defineres som durable ved hjelp av webgrensesnittet.
"Alle køer (både forhåndsdefinerte og de som defineres av konsument) må ha navn som starter med q_. Køen vil ha navn som uttryker mottakeren som bruker den."
F.eks. q_ad_microservice vil være et passende navn for køen som brukes av AD-microservice mottakeren.
"Avsendere vil vanligvis sende meldinger til exchange ex_messages."
Det er flere typer exchange, men vi vil bruke kun topic exchange.
Routing keys i topic exchange
Bindinger
Protokoller og porter
Exempler
Python:
"Well, we'll not risk another frontal assault. That rabbit's dynamite...."
RabbitMQ:
http://www.rabbitmq.com - RabbitMQ sin offisielle side
http://www.rabbitmq.com/configure.html - Generell konfigurasjon av RabbitMQ
http://www.rabbitmq.com/management.html - Bruk av rabbitmq_management plugin i RabbitMQ
http://www.rabbitmq.com/access-control.html - Tilgangskontroll i RabbitMQ
http://www.rabbitmq.com/man/rabbitmqctl.1.man.html - rabbitmqctl manual side
http://www.rabbitmq.com/tutorials/amqp-concepts.html - Generelt om AMQP og forskjellige exchanges
UiO:
Oppsett og installasjon av RabbitMQ (intern)
Bøker:
RabbitMQ in action - Alvaro Videla / Jason J.W. Williams - 2012 - Manning
Mastering RabbitMQ - Ayanoglu / Aytas / Nahum - 2015 - PACKT Publishing