Automatisch eine unterschiedliche Modulkonfiguration auf dev, staging und live einrichten

24. September 2013 - 11:36

Hinter dem ziemlich sperrig daher kommenden Titel versteckt sich ein doch sehr banales Problem, was wohl doch sehr viele kennen:

Man möchte eine Anpassung an einem Projekt vornehmen, dass schon online ist. Um den aktuellen Stand zu haben, exportiert man sich nett die Datenbank, spielt sie auf dev ein und dann ist es auch schon passiert... Da Konfiguration und Inhalt nicht von einander getrennt vorliegen, holt man sich halt wirklich alles, auch Einstellungen, die man eigentlich nicht haben will. Bei mir war der Stein des Anstosses Shield, welches wir nutzen, damit die Test- und Staging-Umgebung vor ungebetenen Benutzern (auch dem Googlebot) sicher ist. Spiele ich also die Datenbank von live ein, ist der Passwortschutz erstmal weg. Je nachdem wie gut mein Gedächtnis an diesem Tag funktioniert, erinnere ich mich daran, dass ich diese Einstellung unbedingt noch machen muss. Vergisst man das für ein paar Tage, kann man fröhlich über die Google Webmaster Tools die bereits indizierten URLs wieder entfernen. Ich will mich nicht jedes mal daran erinnern müssen, was ich alles an Anpassungen vornehmen muss, also musste hierfür eine Lösung her. Von Einstellungen in dieser Art lassen sich noch ein einige andere mehr finden, aber ich beziehe mich hier nur auf das Shield Modul.

Der klassische Möglichkeit, hier etwas zu machen ist die settings.php. Diese ist nicht im git und bietet mit dem "conf"- Array die Möglichkeit Werte der Variables zu überscheiben. Allerdings war mir noch keine Möglichkeit bekannt, auch über diesen Weg auch Module an- und auszuschalten. Aber nach kurzen googlen habe ich Environment modules gefunden. Dieses ermöglicht es genau das zu tun. Man geht hierfür folgendermaßen vor.

Man installiert das Modul auf allen Umgebungen, auch auf dem live-System. Dort hat es allerdings keinen Einfluss, da wir hier keine Änderungen an der settings.php vornehmen. live haben wir auch Shield installiert, aber dort ist es deaktiviert. Auf dev fügen wir in der settings.php folgende Zeilen ein:

$conf['environment_modules'] = array(
'shield' => 'profiles/loom/modules/shield/shield.module',
);
$conf['shield_user'] = 'Username';
$conf['shield_pass'] = 'Password';

Und das war es schon. Nach einem Einspielen der Datenbank von live ist Shield automatisch an und hat die angegebenen Credentials.

Das ganze lässt sich wie gesagt auf viele weitere Module erweitern, wie z.B. Devel und Stage file proxy Stage file proxy. Beide Module sollten auf live deaktiviert sein und fehlen bei uns aber in keinem Projekt bei der Entwicklung. (Sieht man auch schon daran, dass der Pfad zu den Modulen in unser Installationsprofil zeigt und nicht nach sites/all/modules/contrib/.)

$conf['environment_modules'] = array(
'devel' => 'profiles/loom/modules/devel/devel.module',
'stage_file_proxy' => 'profiles/loom/modules/stage_file_proxy/stage_file_proxy.module',
);

In diesem Sinne ... frohes schaffen.

Christopher Nixon

Head of Development

Neuen Kommentar schreiben