Advertisement

Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant

Geschäftsführer at network.publishing GmbH
Mar. 19, 2015
Advertisement

More Related Content

Advertisement

Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant

  1. DEPLOYMENT EINES TYPO3-INTRANETS MIT VAGRANT TUGCGN MÄRZ 2015
  2. Jari-Hermann Ernst DIE REFERENTEN TEAMARBEIT Christoph Möller Webdeveloper PHP/TYPO3 B·A·D Gesundheitsvorsorge und Sicherheitstechnik GmbH Geschäftsführer network.publishing GmbH
  3. 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ÄSENTATION AGENDA FÜR
  4. Use Case
 INTRANET ZUM MITNEHMEN
  5. KEY-FACTS ZU TEAMPOINT PROJEKTUMGEBUNG • "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
  6. SYSTEME, POLICIES, DATEN PROJEKTUMGEBUNG • 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
  7. ARCHITEKTUR GESAMTSYSTEM
  8. AUS UNTERNEHMENSSICHT ANFORDERUNGEN • parallel und unabhängig mehrere Features entwickeln • lange Test-, Feedback-, Freigabezyklen • Unternehmens-IT darf nicht durch DEV-Prozesse belastet werden • reproduzierbarer, dokumentierter Entwicklungsprozess
  9. AUS ENTWICKLERSICHT #1 ANFORDERUNGEN • 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
  10. AUS ENTWICKLERSICHT #2 ANFORDERUNGEN • 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)
  11. Real Life
 PROBLEMS FACED
  12. 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"
  13. 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
  14. SPERRIGES DEPLOYMENT TYPO3 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
  15. Lösungsansatz
 INTRANET-DEV MIT VAGRANT
  16. LOKALE SYSTEMUMGEBUNG #1 VORBEREITUNGEN • 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)
  17. LOKALE SYSTEMUMGEBUNG #2 VORBEREITUNGEN • Vagrant als Deployment-Framework für lokale virtuelle Maschinen • siehe http://vagrantup.com • Virtualisierung, Versuch #1: Virtualbox • Virtualisierung, Versuch #2: VMWare Workstation + Vagrant-Provider
  18. LOKALE SYSTEMUMGEBUNG #3 VORBEREITUNGEN • 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
  19. VIRTUELLE DEV-MASCHINE VORBEREITUNGEN • 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
  20. ...UND SCHON KANN'S LOSGEHEN! AUSPROBIEREN
  21. Walkthrough
 ERZEUGEN EINES NEUEN DEV-SYSTEMS
  22. PROJEKTVERZEICHNIS VORBEREITEN WALKTHROUGH • 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)
  23. PROJEKTVORBEREITUNG VIDEO
  24. CONFIG- FILE CODE
  25. CONFIG- FILE CODE
  26. NUTZDATEN UPDATEN WALKTHROUGH • 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)
  27. UPDATE ASSETS CODE
  28. UPDATE ASSETS CODE
  29. UPDATE ASSETS CODE
  30. UPDATE ASSETS CODE
  31. NUTZDATEN UPDATEN VIDEO
  32. LOKALE VM ERZEUGEN WALKTHROUGH • 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, ...)
  33. VAGRANT- FILE CODE
  34. LOKALE VM ERZEUGEN VIDEO
  35. INSTALL DEVSITE CODE
  36. INSTALL DEVSITE CODE
  37. DEVSITE CONFIG FILES CODE
  38. INSTALL DEVSITE CODE
  39. INSTALL DEVSITE CODE
  40. INSTALL DEVSITE CODE
  41. INSTALL DEVSITE CODE
  42. INSTALL DEVSITE CODE
  43. INSTALL DEVSITE CODE
  44. INSTALL DEVSITE CODE
  45. INSTALL DEVSITE CODE
  46. INSTALL DEVSITE CODE
  47. ERGEBNISSE VIDEO
  48. Lessons Learned
 VERBESSERUNGS- POTENTIAL
  49. BESSER GEHT IMMER LESSONS 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?
  50. BESSER GEHT IMMER LESSONS LEARNED • VMWare-Investition lohnt. • SLES 11 ist so richtig Enterprise. • Deployment mit TYPO3 6.2 ist einfacher.
  51. FRAGEN & ANTWORTEN
  52. VIELEN DANK!
Advertisement