Von Test nach Live mit Rex
Wer bin ich?
•   Jan Gehring
•   Angestellt bei inovex als Systems Architect
•   Design, Aufbau & Betrieb von
    Serverlandschaften
•   Web- und Mailcluster
•   Perl seit 1998
Wer bin ich?
•   Jan Gehring
•   Angestellt bei inovex als Systems Architect
•   Design, Aufbau & Betrieb von
    Serverlandschaften
•   Web- und Mailcluster
•   Perl seit 1998

•   https://github.com/krimdomu
•   @jfried83
Also bei mir funktionierts...
Fail early - Fail hard
Rex - Was ist das?
•   der Name steht für "Remote Execution"

•   Automatisierung
•   Serverorchestrierung
•   Konfigurationsmanagement
•   Deployments
Rex - Etwas Geschichte
•   wird entwickelt seit 2010
•   wurde entwickelt für Softwaredeployments
•   wird seitdem kontinuierlich weiterentwickelt
Philosophie
•   Getting Things Done
    o   Schnell
    o   Zuverlässig bzw. Nachvollziehbar
•   Bruch der Kompatibilität = Bug
Philosophie
•   Getting Things Done
    o   Schnell
    o   Zuverlässig bzw. Nachvollziehbar
•   Bruch der Kompatibilität = Bug
•   Feature Flags
Juhu ein neues Projekt
Ein neues Projekt
•   2 Wege
Ein neues Projekt
•   2 Wege
    o   Wir fangen gleich an zu implementieren
http://www.terminus-notfallmedizin.de/blog/
Ein neues Projekt
•   2 Wege
    o   Wir fangen gleich an zu implementieren
    o   Wir fragen nach den Anforderungen
Ein neues Projekt
•   2 Wege
    o   Wir fangen gleich an zu implementieren
    o   Wir fragen nach den Anforderungen
         Software Architektur
           Gibt es Vorgaben bzgl. Perl Versionen oder
            Modulversionen
           Unter welchem OS soll es laufen?
           Clusterbetrieb? Hochverfügbarkeit?
           und vieles mehr...
Die Entwicklungsumgebung
Die Entwicklungsumgebung


•   im Normalfall virtuell
•   so nah wie möglich an Produktion
•   Rex/Boxes um schnell VMs zu erstellen
•   Rex zum provisionieren und deployen
Basics - der Aufbau
•   Make = Makefile
•   Rex = Rexfile

•   Taskbasiert

•   SSH
•   Keine Vorgabe der Authentifizierung

•   Protokollunabhängig
•   Es gibt auch einen HTTP/s Modus
Der Start
System vorbereiten
•   Beispielprojekt
    o   Webserver
    o   Memcache
    o   Datenbank
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
bash# rex box
modules.rexify.org
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Die Entwicklungsumgebung
Es gibt mehr...
•   Environments
•   Verwaltung von Diensten
    o   starten
    o   stoppen
    o   runlevel manipulation
•   Arbeiten mit Dateien / Config-Management
    o   Templates
•   Benutzerverwaltung
•   Filesystemoperationen
•   Partitionierung von Festplatten
•   ...
•   http://rexify.org/api
Deployments
Deployments
•   mittels Git
•   mittels Paketmanager
•   mittels Symlinks
Deployments
•   mittels Git
•   mittels Paketmanager
•   mittels Symlinks
•   Rex::Apache::Deploy
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung




   bash# rex deploy --commit=abcd1234
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Deployment der Anwendung
Environments
Environments




bash# rex -E live deploy --commit=abcd1234
Vielen Dank fürs Zuhören.

● http://rexify.org/
● http://modules.rexify.org/

● http://box.rexify.org/

Von Test nach live mit Rex