Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant

59
DEPLOYMENT EINES TYPO3-INTRANETS MIT VAGRANT TUGCGN MÄRZ 2015

Transcript of Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant

DEPLOYMENT EINES TYPO3-INTRANETS MIT VAGRANT

TUGCGN MÄRZ 2015

Jari-Hermann Ernst

DIE REFERENTENTEAMARBEIT

Christoph MöllerWebdeveloper PHP/TYPO3

B·A·D Gesundheitsvorsorge und Sicherheitstechnik GmbH

Geschäftsführer

network.publishing GmbH

1. Use Case „Intranet zum Mitnehmen"

2. Problems faced

3. Lösungsansatz

4. Walkthrough: Erzeugen eines neuen DEV-Systems

5. Lessons Learned, Verbesserungspotential

6. Fragen & Antworten

DIESE PRÄSENTATIONAGENDA FÜR

Use Case

INTRANET ZUM MITNEHMEN

KEY-FACTS ZU TEAMPOINTPROJEKTUMGEBUNG

• "TeamPoint" = Unternehmens-Intranet/Info-Portal

• essentielles System für über 3.000 Mitarbeiter

• Inhalte/Funktionen in ständiger Bearbeitung, User-Generated Content

• eingerichtet als Browser-Startseite - Ausfälle werden sofort bemerkt

• Verfügbarkeit und Performance des LIVE-Systems darf nicht durch DEV-Prozesse beeinträchtigt werden

SYSTEME, POLICIES, DATENPROJEKTUMGEBUNG

• Basis: SLES 11, LAMP, TYPO3 4.5, Apache Solr

• Umfangreiche Integrationen: SAP, Datenbanken, eRecruiting, Seminarbuchungen, XML-Daten, APIs

• Staging für Code und Konfiguration (DEV, STAGE, LIVE)

• Multi-Server-Setup (MySQL, Web, Solr, SAN-Storage, LDAP, ...)

• ca. 20 GB Nutzdaten, mehrere GB Datenbankinhalte

• Master-Content wird in LIVE gepflegt

ARCHITEKTURGESAMTSYSTEM

AUS UNTERNEHMENSSICHTANFORDERUNGEN

• parallel und unabhängig mehrere Features entwickeln

• lange Test-, Feedback-, Freigabezyklen

• Unternehmens-IT darf nicht durch DEV-Prozesse belastet werden

• reproduzierbarer, dokumentierter Entwicklungsprozess

AUS ENTWICKLERSICHT #1ANFORDERUNGEN

• entwickeln, wo immer man ist (Home-Office, unterwegs)

• neue Dinge gefahrlos ausprobieren (TYPO3-/Solr-Upgrades, ...)

• ständiges Anlegen neuer DEV-Systeme, "Wegwerf-VMs"

• kein Warten auf IT/Dienstleister bei Bedarf nach neuen DEV-Systemen

• Bedarf für konsistente Point-in-Time-Snapshots

• Code, Config, Content und Struktur (DB+Filesystem) müssen passen

AUS ENTWICKLERSICHT #2ANFORDERUNGEN

• Arbeitsumgebung: Windows-Laptop, bevorzugte IDE (PhpStorm)

• limitierter Plattenplatz, nicht unbedingt High-End aus Performancesicht

• schneller Workflow, direkte Auswirkung bei Änderungen

• Geschwindigkeits-/Platzoptimierung (sperrige Datenmengen)

• unkomplizierte Zusammenarbeit mit Agentur/Dritten

• Integration mit VCS (Subversion, demnächst Gitlab)

Real Life

PROBLEMS FACED

WENN'S IMMER EINFACH WÄRE...HERAUSFORDERUNGEN

• Einschränkungen durch Enterprise-IT, lange Lebenszyklen und Policies

• Lizenzbeschränkungen, Kosteneinsparung (SLES 11 vs. Ubuntu Server)

• DEV-System muss auch ohne VPN-Verbindung laufen/erzeugt werden können

• TYPO3 4.5 ist nicht deployment-freundlich

• I/O-Performance ist der Flaschenhals

• Problemfall "LDAP-Authentifizierung"

• Problemfall "E-Mailversand"

FLASCHENHALS "SHARED DIRS"PERFORMANCE

• Shared Directories VBox/VMWare sind langsam

• lokale VM sollte möglichst nur aus dem echten VM-Filesystem servieren

• daher werden die meisten Nutzdaten per rsync in VM kopiert

• Ausnahme: fileadmin/SHARED, uploads (mehr als 20 GB)

• große Nutzdatenverzeichnisse per Shared Directory und Symlink in DocRoot

SPERRIGES DEPLOYMENTTYPO3 4.5

• TYPO3 kennt keine DB-Migrationen => EXT:t3deploy, DB-Schema-Updates

• Scheduler, LDAP-Auth, Domain-Records müssen deaktiviert/angepasst werden

• Language Package Updates aus dem TER müssen neu gezogen werden

• generell: passende Overrides/Includes für localconf.php

Lösungsansatz

INTRANET-DEV MIT VAGRANT

LOKALE SYSTEMUMGEBUNG #1VORBEREITUNGEN

• Cygwin als UNIX-Umgebung für Windows - siehe http://cygwin.com

• Ziel: Lösung soll unter Windows, Mac OS X, Linux einsetzbar sein

• Benötigte Pakete: openssh, subversion, rsync, wget, mysql (Client)

• SSH-PubKey-Auth einrichten für alle LIVE-Hosts (Web, DB, Solr)

LOKALE SYSTEMUMGEBUNG #2VORBEREITUNGEN

• Vagrant als Deployment-Framework für lokale virtuelle Maschinen

• siehe http://vagrantup.com

• Virtualisierung, Versuch #1: Virtualbox

• Virtualisierung, Versuch #2: VMWare Workstation + Vagrant-Provider

LOKALE SYSTEMUMGEBUNG #3VORBEREITUNGEN

• Workspace-Verzeichnis anlegen, im Zugriff für IDE

• auf möglichst große Platte, besser SSD (I/O-Performance)

• "sperrige" Daten als Kopiervorlage lokal ablegen/updaten

• für TYPO3 (SITEDATA):

• fileadmin/SHARED (1TB NFS Volume), uploads, typo3conf

• für Solr (SOLRDATA):

• kompletter Index/Cores, Schemata, Config

VIRTUELLE DEV-MASCHINEVORBEREITUNGEN

• Ubuntu Server statt SLES 11 (nicht verfügbar als freie Vagrant-Basebox)

• Ubuntu ist besser non-interaktiv skriptbar

• aktuellere Softwareversionen (PHP, MySQL, Kernel, Libs)

• keine Lizenzkosten für lokale DEV-Umgebung

...UND SCHON KANN'S LOSGEHEN!AUSPROBIEREN

Walkthrough

ERZEUGEN EINES NEUEN DEV-SYSTEMS

PROJEKTVERZEICHNIS VORBEREITENWALKTHROUGH

• Workspace-Verzeichnis erstellen

• Cygwin-Shell öffnen

• SITEDATA und SOLRDATA bereitstellen (Kopie oder Symlink)

• Vagrant-Config aus SVN auschecken

• Konfigurationsdatei anpassen (Pfade, SVN User)

• Vagrant vorbereiten (Plugins für Package-Cache und VMWare, Lizenz)

PROJEKTVORBEREITUNGVIDEO

CONFIG- FILE

CODE

CONFIG- FILE

CODE

NUTZDATEN UPDATENWALKTHROUGH

• Cygwin-Shell öffnen

• ./update-assets.sh

• Aktualisiert SITEDATA und SOLRDATA

• erstellt frischen MySQL-Dump der LIVE-Site und legt ihn lokal ab

• Ziel: 20+ GB nur übertragen, wenn unbedingt nötig

• geht nur bei Verbindung zum LIVE-System (Office-LAN oder per VPN)

UPDATE ASSETS

CODE

UPDATE ASSETS

CODE

UPDATE ASSETS

CODE

UPDATE ASSETS

CODE

NUTZDATEN UPDATENVIDEO

LOKALE VM ERZEUGENWALKTHROUGH

• Cygwin-Shell in Projektverzeichnis öffnen

• vagrant up --provider vmware_workstation

• Debug: VAGRANT_LOG=INFO vagrant up --provider vmware_workstation

• erstellt neue VM, installiert und konfiguriert nach Bauplan/Skript

• lokale Abweichungen (Auth/LDAP, Mail/SMTP, Netzwerk, SSL-Zertifikat, ...)

VAGRANT- FILE

CODE

LOKALE VM ERZEUGENVIDEO

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

DEVSITE CONFIG FILES

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

INSTALL DEVSITE

CODE

ERGEBNISSEVIDEO

Lessons Learned

VERBESSERUNGS- POTENTIAL

BESSER GEHT IMMERLESSONS LEARNED

• EXT:coreapi kann mittlerweile mehr (DB-Schema-Updates, Clear Cache, ...)

• EXT:t3deploy wäre nicht mehr nötig

• alternativ: TYPO3 Surf

• git ist besser geeignet als SVN (Cherry Picking, Merge-Lanes, Feature Branches, etc.)

• Warum kein PuPHPet, Puppet, chef, ansible?

BESSER GEHT IMMERLESSONS LEARNED

• VMWare-Investition lohnt.

• SLES 11 ist so richtig Enterprise.

• Deployment mit TYPO3 6.2 ist einfacher.

FRAGEN &

ANTWORTEN

VIELEN DANK!