Zuerst werden wir eine altmodische manuelle Installation und Konfiguration von RabbitMQ durchführen. Es gibt eine schöne Anleitung beim Sensu-Projekt auf GitHub.

Zuerst habe ich ein Projektverzeichnis erstellt, ähnlich wie bei meinem “hello_puppet”-Projekt, über das ich in meinem letzten Blogbeitrag geschrieben habe, und alles entsprechend umbenannt.

Dann habe ich die Box in Vagrant hinzugefügt, das Ganze gestartet und mich verbunden:

vagrant box add dev_ops_central_box <path_to_your_box>/package.box
chmod 0600 id_rsa.vagrant
vagrant up
vagrant ssh

Ich liebe es. Es ist einfach zu einfach für jeden Software-Nerd da draußen. Aber so sollte es sein: es kinderleicht zu machen, einen neuen Spielplatz für Experimente jeglicher Art zu erstellen. Sei es infrastruktur- oder softwareentwicklungsbezogen. Das spielt keine Rolle mehr.

Holen wir uns alles, was wir für RabbitMQ brauchen, und dann RabbitMQ selbst.

Wir müssen alles als root machen.

Dann installieren wir Erlang.

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-6.noarch.rpm
yum -y install erlang

Wir brauchen auch git auf unserer Box. Ich sollte das zum Standard machen, weil es für praktisch jede Konfiguration unverzichtbar ist.

yum -y install git

Wir können uns jetzt auf RabbitMQ selbst konzentrieren, indem wir zuerst das RPM holen.

rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v2.7.1/rabbitmq-server-2.7.1-1.noarch.rpm

Als Nächstes müssen wir einige SSL-Zertifikate erstellen. Ich werde hier nicht ins Detail gehen und zitiere einfach Joe Miller, der die Anleitung geschrieben hat, auf der dieser Blog basiert.

Wir müssen einige SSL-Zertifikate für unseren RabbitMQ-Server und die Sensu-Clients erstellen. Ich habe ein einfaches Skript auf GitHub bereitgestellt, um dabei zu helfen. Du solltest einige Dinge in der openssl.cnf für deine Organisation ändern, wenn du dies in der Produktion verwendest. Das Skript generiert einige Dateien, die wir im gesamten Guide benötigen werden, also behalte sie griffbereit.

git clone https://github.com/joemiller/joemiller.me-intro-to-sensu.git
cd joemiller.me-intro-to-sensu/
./ssl_certs.sh clean
./ssl_certs.sh generate
mkdir /etc/rabbitmq/ssl
cp server_key.pem /etc/rabbitmq/ssl/
cp server_cert.pem /etc/rabbitmq/ssl/
cp testca/cacert.pem /etc/rabbitmq/ssl/

Wir fahren mit der Konfigurationsdatei von RabbitMQ fort.

touch /etc/rabbitmq/rabbitmq.conf

Füge folgendes ein

[
 {rabbit, [
 {ssl_listeners, [5671]},
 {ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"},
     {certfile,"/etc/rabbitmq/ssl/server_cert.pem"},
     {keyfile,"/etc/rabbitmq/ssl/server_key.pem"},
     {verify,verify_peer},
     {fail_if_no_peer_cert,true}]}
 ]}
].

Hol dir auch die Management-Konsole, die könnte irgendwann nützlich sein.

rabbitmq-plugins enable rabbitmq_management

Starten wir das Ganze.

/sbin/chkconfig rabbitmq-server on
/etc/init.d/rabbitmq-server start

Jetzt möchten wir unseren Browser vom Host-System auf das RabbitMQ-Management-Frontend zeigen. Dafür müssen wir Port-Forwarding im Vagrantfile einrichten. Verlasse die Box und füge folgende Zeile hinzu und lade die Box neu.

config.vm.forward_port 55672, 55672
vagrant reload

Du wirst dich nicht mit deinem Browser verbinden können, da die Firewall deiner Vagrant-Box noch aktiv ist, also verbinde dich mit deiner Box und deaktiviere die gesamte Firewall.

vagrant ssh
sudo /etc/init.d/iptables stop

Öffne deinen Browser auf deinem Host-System und navigiere zur folgenden URL: http://localhost:55672, wo du dich mit Benutzername guest und Passwort guest anmelden kannst.

Da hast du es. Willkommen in der Welt von RabbitMQ.

Noch eine Sache. Wir haben mehrere potenzielle Brownfields, die wir “irgendwann” refactoren müssen. Böser Junge… Sehr böser Junge…

  • Für den ernsthaften Einsatz unserer Konfiguration, auch bekannt als Produktionseinsatz, müssen wir unsere eigenen SSL-Zertifikate verwenden.
  • Zusätzlich sollten wir nicht die gesamte Firewall stoppen, sondern spezifische Regeln anwenden.
  • Und zuletzt müssen wir git zu einem Teil unserer Standardkonfiguration machen.

So weit so gut. In den alten Tagen wären wir mit unserem Ergebnis zufrieden gewesen, aber alle coolen Kids heutzutage setzen auf Automatisierung. In meinem nächsten Blogbeitrag werde ich die gesamte Bereitstellung von RabbitMQ mit Puppet automatisieren. Aber für jetzt…

Fertig für heute!