Vor einiger Zeit hatte ich das Vergnügen auf dem Barcamp in Mainz von Stefan Husch, der selbst seit einigen Jahren in Ruby entwickelt und meinem ehemaligen Kollegen Mattias Gutjahr eine tolle Einführung in das Thema Puppet und Vagrant bekommen zu haben. Seit dem befasse ich mich immer mal wieder mit dem gesamten Thema “DevOps” und versuch Dinge die ich immer wieder machen muss zu automatisieren. Stefan ist mir hier ein gutes Stück vorraus. Er provisioniert seine Server schon seit Jahren mit Puppet und stellt damit z.B. Instanzen seines CMS oder z.B. Redmine per Knopfdruck bereit. Da mich das Thema damals direkt in Verbindung mit Magento interessiert hatte, stellte ich meine ersten Erfahrungen über ein Github Projekt der Öffentlichkeit zur Vergfügung. Das ganze habe ich damals auch im Rahmen einer kleinen Vorstellung bei unserer PHPUG gezeigt. Wie bereits geschrieben, enthielt das Projekt meine ersten Erfahrungen mit Puppet und Vagrant. Es wunder mich aber immer mal wieder jemand das Projekt forked obwohl die Scripte alles andere als optimal sind. Einige Forks (z.B. https://github.com/matthewsplant/magento-vagrant-puppet) haben das Projekt um einiges vorangetrieben. Das freut mich natürlich.
Neues Projekt mit Nginx
Inzwischen habe ich eine neue Version ins Netz gestellt. Im Gegensatz zur ersten Variante setze ich jetzt auf einige Standard-Module die man über das Zentral Repository unter https://forge.puppetlabs.com/ leicht findet. Die Module sind in eigenen Git-Repos organisiert die ich einfach als Git-Submodul eingebunden habe. Die Vagrant Box setzt auf die aktuelle offizielle Ubuntu Precise 64 Bit Box auf die bei Bedarf von Vagrant einmalig heruntergeladen wird.
Das Projekt lässt sich über die Konsole schnell wie folgt aufsetzen:
git clone https://github.com/cmuench/Magento-Vagrant-Puppet-Nginx.git
cd Magento-Vagrant-Puppet-Nginx
git submodule init
git submodule update
vagrant up
Nach dem Start der Vagrant Box werden über Puppet direkt alle Abängigkeiten installiert. Das sind im einzelnen die folgenden Server-Komponenten:
Anpassungen
Über das Basis-Puppet-Modul mit dem Namen “magento” werden alle anderen Puppet Module aufgerufen. Das Modul stellt momentan einige Parameter bereit über die z.B. die Magneto Version eingstellt werden kann. Wer selbst sein Magento installieren möchte, der stellt den Parameter “install_magento” einfach auf “false” ein. In diesem Fall wird nur die Umgebung installiert aber nicht der Shop. Das ist z.B. zum Testen von Magento Enterprise Editions von Vorteil da diese nicht über n98-magerun ohne Anpassung der Konfiguration heruntergeladen werden können und dürfen.
Die Anpassung erfolg inder Datei puppet/manifests/base.pp
.
class { "magento":
install_magento => true,
magento_version => "magento-ce-1.6.2.0",
install_sample_data => true
}
Folgende Magento Versionen sind als Angabe zulässig:
- magento-ce-1.6.2.0
- magento-ce-1.7.0.2
- mageplus-master
- magento-mirror-1.4.2.0
- magento-mirror-1.5.1.0
- magento-mirror-1.6.2.0
- magento-ce-2.0.0.0-dev
An diesem Projekt werde ich bestimmt noch ein wenig herumschrauben. Ich freue mich auf Feedback von euch.