silverlogic.rabbitmq
Ankündigung
Lange nichts aktualisiert. Ich arbeite wieder an diesem Playbook, ich werde Fehler beheben (URL, Schlüsselüberprüfung usw.) und eine funktionierende Version bereitstellen, die getaggt ist.
Danach werde ich mich darauf konzentrieren, eine neue Version zu erstellen, die die Version 2.0 dieses Playbooks sein wird. Die Hauptsache, die ich mit Version 2 vorhabe, ist, die Installationsschritte von der reinen Konfiguration zu trennen. Ich möchte nicht eine Million Betriebssysteme in einem Playbook unterstützen. Daher könnt ihr selbst ein ansible-playbook-rabbitmq-install-my-little-snowflak-os erstellen :)
Vielen Dank an alle für die Teilnahme!
Rabbitmq Playbook
Playbook zur Installation und Konfiguration von RabbitMQ. Es werden später verschiedene Anpassungen bei der Konfiguration hinzugefügt.
Wenn ihr Änderungen besprechen oder helfen möchtet, mehr Plattformen zu unterstützen, öffnet ein Issue.
Installation
Verwendet Ansible Galaxy, um dieses Playbook zu installieren:
$ ansible-galaxy install Mayeu.RabbitMQ,1.4.0
Der master
-Branch sollte derzeit als instabil betrachtet werden. Bitte vermeidet es, ihn für etwas anderes als Testzwecke zu verwenden :)
Unterstützte Systeme
Momentan werden nur Debian Jessie und Wheezy auf amd64 unterstützt. Änderungen sind willkommen, um weitere Distributionen oder Betriebssysteme zu unterstützen.
Semantische Versionierung 2.0.0
Ab dem Commit 67c608826a140868a71854ce3129b5f3d67ddcce, verwendet dieses Playbook semantische Versionierung. Gemäß der Spezifikation und da das Playbook in der Produktion verwendet wird, möchte ich die Kompatibilität nicht brechen. Daher ist die erste Versionsnummer 1.0.0.
Die öffentliche API, die in der semantischen Versionierung definiert ist, entspricht den Einstellungen, die dem Benutzer zur Verfügung stehen. Das Brechen der API (Änderung von X.Y.Z
zu (X+1).Y.Z
) bedeutet in diesem Kontext, dass der Benutzer den Variablennamen ändern muss, damit sein Playbook funktioniert.
Jede neu hinzugefügte Funktion (von X.Y.Z
zu X.(Y+1).Z
) sollte einen funktionierenden Standardwert haben, der standardmäßig keine Benutzerinteraktion erfordert. Wenn eine Funktion Benutzerinteraktion erfordert, ist es kein kleines Upgrade, sondern ein großes.
Rollenspezifische Variablen
Installation
Name | Typ | Beschreibung | Standard |
---|---|---|---|
rabbitmq_os_package |
Bool | Wenn wahr, wird das von der OS oder Distribution vorgeschlagene Standardpaket anstelle des von RabbitMQ bereitgestellten verwendet. | false |
Umgebung
Name | Typ | Beschreibung | Standard |
---|---|---|---|
rabbitmq_conf_env |
Hash | Setze Umweltvariable | undef |
Beispiel:
rabbitmq_conf_env:
RABBITMQ_ROCKS: korrekt
Erzeugt:
RABBITMQ_ROCKS="korrekt"
Zertifikat
Name | Typ | Beschreibung | Standard |
---|---|---|---|
rabbitmq_cacert |
String | Pfad zur CA-Zertifikatsdatei. | files/rabbitmq_cacert.pem |
rabbitmq_server_key |
String | Pfad zur SSL-Schlüsseldatei. | files/rabbitmq_server_key.pem |
rabbitmq_server_cert |
String | Pfad zur SSL-Zertifikatsdatei. | files/rabbitmq_server_cert.pem |
rabbitmq_ssl |
Boolean | Definiert, ob wir SSL verwenden wollen | true |
Standardkonfigurationsdatei
Name | Typ | Beschreibung | Standard |
---|---|---|---|
rabbitmq_conf_tcp_listeners_address |
String | Zuhör-Adresse für das TCP-Interface | '' |
rabbitmq_conf_tcp_listeners_port |
Integer | Zuhör-Port für das TCP-Interface | 5672 |
rabbitmq_conf_ssl_listeners_address |
String | Zuhör-Adresse für das SSL-Interface | '0.0.0.0' |
rabbitmq_conf_ssl_listeners_port |
Integer | Zuhör-Port für das SSL-Interface | 5671 |
rabbitmq_conf_ssl_options_cacertfile |
String | Pfad zum CA-Zertifikat | "/etc/rabbitmq/ssl/cacert.pem" |
rabbitmq_conf_ssl_options_certfile |
String | Pfad zum Serverzertifikat | "/etc/rabbitmq/ssl/server_cert.pem" |
rabbitmq_conf_ssl_options_keyfile |
String | Pfad zur privaten Schlüsseldatei | "/etc/rabbitmq/ssl/server_key.pem" |
rabbitmq_conf_ssl_options_fail_if_no_peer_cert |
Boolean | Wert der SSL-Option fail_if_no_peer_cert |
"true" |
Plugins
Name | Typ | Beschreibung | Standard |
---|---|---|---|
rabbitmq_new_only |
String | Plugins als neu hinzufügen, ohne andere Plugins zu deaktivieren | 'nein' |
rabbitmq_plugins |
String | Liste der zu aktivierenden Plugins | [] |
Vhost
Name | Typ | Beschreibung | Standard |
---|---|---|---|
rabbitmq_vhost_definitions |
Liste | Definiere die Liste von Vhosts, die erstellt werden sollen | [] |
rabbitmq_users_definitions |
Liste von Hashes | Definiere die Benutzer, sowie den zugehörigen Vhost und das Passwort (siehe unten) | [] |
Vhosts-Konfiguration definieren
rabbitmq_vhost_definitions:
- name: vhost1
node: node_name #Optional, standardmäßig "rabbit"
tracing: ja #Optional, standardmäßig "nein"
Benutzerkonfiguration definieren:
rabbitmq_users_definitions:
- vhost: vhost1
user: user1
password: passwort1
node: node_name # Optional, standardmäßig "rabbit"
configure_priv: "^resource.*" # Optional, standardmäßig ".*"
read_priv: "^$" # Lesen nicht erlaubt.
write_priv: "^$" # Schreiben nicht erlaubt.
- vhost: vhost1
user: user2
password: passwort2
force: nein
tags: # Optional, Benutzertags
- administrator
Federation
Name | Typ | Beschreibung | Standard |
---|---|---|---|
rabbitmq_federation |
Boolean | Definiert, ob wir eine Federation einrichten müssen | false |
rabbitmq_federation_configuration |
Liste von Hashes | Definiert alle Föderationen, die wir einrichten müssen | Nicht definiert |
rabbitmq_policy_configuration |
Liste von Hashes | Definiert alle Richtlinien, die wir einrichten müssen | Nicht definiert |
Federation-Upstream-Konfiguration definieren:
rabbitmq_federation_upstream:
- name: Name des Upstreams
vhost: lokaler Vhost zur Föderierung
value: JSON-Beschreibung der Föderation
local_username: der lokale Benutzername für die Föderation
Siehe die RabbitMQ-Dokumentation für mögliche JSON-Werte.
Richtlinienkonfiguration definieren:
rabbitmq_policy_configuration:
- name: Name der Richtlinie
vhost: vhost, wo die Richtlinie angewendet wird
pattern: Muster der Richtlinie
tags: Beschreibung der Richtlinie in dict-Form # Beispiel: "ha-mode=all"
Benötigte Dateien
Du musst die benötigten Zertifikate in deinen files/
-Ordner legen, zum Beispiel:
files/
|- cacert.crt
|- myserver_key.key
|- myserver_cert.crt
Und dann die Rolle konfigurieren:
rabbitmq_cacert: files/cacert.crt
rabbitmq_server_key: files/myserver_key.key
rabbitmq_server_cert: files/myserver_cert.crt
Test
Es gibt einige Tests, die versuchen, eine VM mit Vagrant bereitzustellen. Starte sie einfach mit:
$ vagrant up # zum Testen mit Debian Jessie
$ export VAGRANT_BOX_NAME='chef/centos-6.5' vagrant up # zum Testen mit CentOS
Du kannst die VM, die beim Test verwendet wird, ändern, indem du die Umgebungsvariable VAGRANT_BOX_NAME
auf etwas anderes als deb/jessie
setzt.
Lizenz
BSD
RabbitMQ is a complete and highly reliable enterprise messaging system based on the emerging AMQP standard.
ansible-galaxy install silverlogic.rabbitmq