sldeploy Systemkonfiguration protokollieren über GIT mit Mac OS X

alex's picture

Dieser Artikel beschreibt, wie man mit sldeploy die Systemkonfiguration über ein Git Repository überwachen kann.

sldeploy geht dabei wie folgt vor:

  • das Verzeichnis /private/etc wird über rsync gespiegelt. Das gespiegelte Verzeichnis wird mit Git verwaltet
  • es werden die Metadaten zu /private/etc getrackt (z.B. Benutzerrechte)
  • falls vorhanden/konfiguriert, werden zu einem (oder mehreren) Drupal Projekt die installierten Module protokolliert

Voraussetzungen

  • SSH Key-Authentifizierung zum Git-Server ist eingerichtet (falls ein externen Server verwendet wird)
  • macports ist installiert

Installation

Zuerst installieren wir mit Hilfe von macports die benötigten Programme:

sudo port install rsync git-core

Über github bezieht man sldeploy

git clone git://github.com/alexandermeindl/sldeploy.git

Konfiguration

Wir legen die Konfigurationsdatei im Verzeichnis /private/etc mit dem Namen slphpdev.inc.php an und setzen folgenden Inhalt:

<?php
// sldeploy for mac os x

$conf['git_bin']   = '/opt/local/bin/git';
$conf['rsync_bin'] = '/opt/local/bin/rsync';

# required for log
$conf['package_manager'] = 'port';
$conf['log_source']      = /private/var/root/log_source';
$conf['
log_host']        = 'mein_hostname';
$conf['
etc_dir']         = '/private/etc';
$conf['
log_excludes']    = '~ .dpkg-new .dpkg-old adjtime mtab ld.so.cache cups/certs';

Mit log_excludes kann man Muster (Dateien und Verzeichnisse) definieren, die von der Überwachung ausgeschlossen werden sollen. Besonders Dateien, die vom System automatisch aktualisiert werden, sollten ausgeschlossen werden, um das Protokoll übersichtlich zu halten.

Unsere Buchempfehlung

Image of Versionskontrolle mit Git
Autor: Jon Loeliger
Verlag: O'Reilly
Verkaufsrang: 7904
Das folgende Buch befasst sich ausführlicher mit dem hier genannten Thema. Wenn Du mehr über Versionskontrolle mit Git erfahren willst, empfehlen wir Dir diesen Artikel.

sldeploy erwartet nun im Verzeichnis /var/root/log_source das Git Repository zu finden, in dem die Informationen protokolliert werden sollen. Um ein neues Repository anzulegen, führen wir folgenden Befehl aus:

sudo mkdir -p /private/var/root/log_source/mein_hostname
sudo git init /private/var/root/log_source

Falls ein bestehendes Repository verwendet werden soll, verwendet man:

sudo git clone /pfad/zu/meinen/repository /private/var/root/log_source

Wichtig ist, dass dies mit sudo gemacht wird, da Administrator Rechte erforderlich sind, um die Infos zu loggen. Im Repository muss ein Verzeichnis existieren, welches den Namen trägt, der unter log_host definiert wurde. Falls dieses Verzeichnis nicht existiert, muss dies angelegt werden.

Anwendung

Am besten startet man das Skript über einen Cronjob, der mindestens einmal am Tag ausgeführt wird. Um die Konfiguration auf Funktionstüchtigkeit zu testen, führen wir zuerst das Skript manuell aus:

sudo /pfad/zu/sldeploy_verzeichnis/sldeploy -p system-log

Falls alles funktioniert, müsste jetzt ein Commit in das Git Repository ausgeführt worden sein. Falls dies nicht der Fall ist, muss die Konfiguration überprüft werden.

Hat alles bei der manuellen Ausführung funktioniert, kann man nun einen Cronjob anlegen, der sldeploy z.B. alle 12 Stunden automatisch ausführt:

sudo crontab -e

Nun fügt man folgende Zeile ein:
35  */12   *   *   * /Pfad/zu/sldeploy_verzeichnis/sldeploy -p system-log

Auswertung

Nun kann man komfortabel über das Git Repository beobachten, was sich an der Konfiguration des Systems (oder auch der Drupal Module) verändert hat. Hier ein Beispiel, in dem man eine Veränderung eines Drupal Themes über Gitweb angezeigt bekommt. Acquia Marina wurde von "Aktiv" auf "Inaktiv" gesetzt:
Ein Diff, der die Statusänderungen von Drupal Modulen aufzeigt
Damit Drupal Module auch protokolliert werden, muss in der Konfigurationsdatei das Projekt definiert worden sein und der Pfad zu Drush hinterlegt worden sein (siehe mitgelieferte Beispiel-Konfigurationsdatei von sldeploy).

Alle hier aufgeführten Informationen / Dokumentationen sind nur als Denkanstoß gedacht und wurden mit großer Sorgfalt erarbeitet. Es besteht jedoch kein Anrecht auf Vollständigkeit / Richtigkeit. Der Autor kann für eventuell verbliebene fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Gleiches gilt für entstandene Schäden bei unsachgemäßer Ausführung! Im Zweifelsfall immer einen Fachmann mit der Durchführung beauftragen!

Gerne bieten wir Ihnen hierfür unsere Consulting Dienste an. © Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten.