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

vcdeploy 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 vcdeploy

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

Konfiguration

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

<?php
// vcdeploy 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.

vcdeploy 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/vcdeploy_verzeichnis/vcdeploy -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 vcdeploy z.B. alle 12 Stunden automatisch ausführt:

sudo crontab -e

Nun fügt man folgende Zeile ein:

35  */12   *   *   * /Pfad/zu/vcdeploy_verzeichnis/vcdeploy -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 vcdeploy).

Aktualisiert: