Experiment mit OpenShift Origin und Drupal 8

Letzten Donnerstag wurde nach mehreren Jahren Entwicklung die PHP Plattform Drupal 8 freigegeben. Dies nahmen wir zum Anlass, zusammen mit OpenShift Origin ein Experiment zu machen: Was braucht es, um mit einfachsten Mitteln Drupal 8 auf OpenShift Origin zum Laufen zu kriegen?

 

Aber was ist OpenShift Origin überhaupt? Es handelt sich dabei um eine offene Platform-as-a-Service Umgebung von RedHat, welche auf Docker und Kubernetes aufbaut. Origin ist der Name für die OpenSource Version. Die von RedHat kommerziell vertriebene Plattform nennt sich OpenShift Enterprise (kurz: OSE).

OpenShift ermöglicht es, mit wenig Aufwand für den Entwickler seine Applikation zu deployen und zu betreiben. Die PaaS-Lösung nimmt dem Entwickler dabei Aufgaben wie das Bauen (z.B. kompilieren) und Deployen ab.

Nach einigem Tüfteln ist es uns mit dem folgenden einfachen Befehl gelungen, Drupal 8 in einer Basiskonfiguration auf OpenShift Origin laufen zu lassen:

oc new-app php~https://github.com/tobru/drupal-openshift.git#openshift mysql --group=php+mysql -e MYSQL_USER=drupal -e MYSQL_PASSWORD=drupalPW -e MYSQL_DATABASE=drupal

Auf den ersten Blick sieht dieser Befehl abschreckend aus, nimmt man ihn aber in seine einzelnen Bestandteile auseinander, macht er mehr Sinn:

  • oc new-app: oc ist der Name des OpenShift Commandline Clients und new-app der Befehl um eine neue App zu deployen.
  • php~https://github.com/tobru/drupal-openshift.git#openshift: Der String vor dem Tilde Zeichen gibt den Basis Docker Container an, um die Applikation mit S2I (Source to image) zu bauen. Danach kommt der Pfad zum Git Repository und mit dem Hash Zeichen wird die Referenz (z.B. Branch) angegeben.
  • mysql: Hier wird ein weiterer Docker Container hinzugefügt. In diesem Fall ein MySQL Container.
  • –group=php+mysql: Gruppiert diese beiden Container zu einem Pod.
  • -e: Definiert Umgebungsvariablen, welche bei der Ausführung der Container zur Verfügung stehen.

Beim ersten Zugriff auf die Applikation startet der Drupal Installationsassistent. Anschliessend kann Drupal ganz normal verwendet werden.

Die Schwierigkeit bei diesem Experiment war, die richtigen Parameter zu finden und Drupal zur Zusammenarbeit zu bewegen. Unter anderem musste ein settings.php erstellt werden, da dies von Drupal verlangt wird. Auch musste im settings.php eine PHP-Einstellung angepasst werden.

Die hier vorgestellte Möglichkeit, Drupal 8 unter OpenShift zu betreiben, stellt nur einen Proof-of-Concept Status dar. Will man dies produktiv betreiben, gibt es noch einiges an Arbeit zu erledigen. Gerne unterstützen wir sie dabei.