Hallo Zusammen,
Ich habe meine openHAB Installation so eingerichtet, dass ich die Konfiguration mittels git verwalten kann. Ich denke mir es könnte ein Interesse daran bestehen, deshalb hier eine kleine Anleitung:
Ausgangslage:
Es soll ein git Repo auf dem openHAB-Rechner eingerichtet werden, welches dann von einem Desktoprechner bearbeitet wird.
openHAB läuft bei mir auf einem AMD Geode Board welches ich mit einem minimalen Ubuntu aufgesetzt wurde. (Stichwort debootstrap)
openHAB wurde unter "/opt/openhab" installiert und läuft unter dem Benutzer "openhab". Zugriff auf das System hat man über SSH direkt per root-User.
git ist auf dem System installiert. (apt-get install git)
Benutzerkonfiguration:
Wie gesagt läuft openHAB unter dem Benutzer "openhab" welcher ansonsten keine Rechte hat und auch nicht für SSH-Zugriff benutzt wird. Alle Dateien unter "/opt/openhab" gehören aber diesem Benutzer. Und er hat ein Home-Verzeichniss unter "/home/openhab"
Der Benutzer muss auch ein Loginpasswort haben, welches wir für git benutzen werden. (passwd openhab)
Über diesen Benutzer erfolgt der git-Zugriff, dafür wird die Login-Shell auf eine git-shell beschränkt:
Ebenfalls wurde das Homeverzeichniss angepasst (falls nötig)
Nun müssen die git Befehle für die git-shell aktiviert werden:
Weiter werden die SSH-Rechte des Benutzers eingeschränkt: (Optional) in der Konfigurationsdatei "/etc/ssh/sshd_config", am Ende anfügen:
Git Repo vorbereiten:
Das "haupt" Repository liegt auf dem openHAB-Board im Homeverzeichniss von "openhab". Es muss ein so genanntes "bare repository" erstellt werden. Nur auf solche können "push's" durchgeführt werden:
Es ist darauf zu achten, dass "openhab" der Dateieigentümer für alle Files in seinem Homeverzeichniss ist. (chown -R openhab
penhab /home/openhab)
Um zu erreichen das automatisch immer eine aktuelle Version der Konfiguration aus dem Repository an openHAB "gesendet" wird, richten wir ein "auto deployement" ein. Dies erreichen wir mit einem der Hook-scripts, welche automatisch von git aufgerufen werden:
Wir sind immer noch im git repository auf dem openHAB-Board, nun erstellen wir das Script "hooks/post-update":
Es muss ausführbar sein. (chmod +x hooks/post-update) Dieses Skript wird nun nach jedem "push" ausgeführt und kopiert die aktuellste Konfiguration nach "/opt/openhab/configurations" Dieser Ordner sollte zur Vorbereitung ganz geleert werden.
Auf dem Desktoprechner:
Nun wechseln wir auf den Rechner mit welchem wir die Konfiguration bearbeiten möchten und öffnen ein Terminal. (Nur für git, sollte also auch mit Windows klappen) wir Wechseln in ein Arbeitsverzeichnis und holen das leere Repository vom openHAB-Board:
Nun kopieren wir unsere bestehende Konfiguration in dieses Verzeichnis, machen einen "commit" und schicken die Konfiguration wieder zurück zum Board:
Nach dem push wird nun die Konfiguration automatisch vom openHAB-Board ins entsprechende Verzeichnis ausgecheckt und openHAB übernimmt die neue Konfiguration.
Ich hoffe die Anleitung ist einigermassen verständlich. Ich wollte jetzt nicht zu detailliert werden, da je nach Setup sowieso Anpassungen nötig sind.
Gruss und viel Erfolg!
Jan
Ich habe meine openHAB Installation so eingerichtet, dass ich die Konfiguration mittels git verwalten kann. Ich denke mir es könnte ein Interesse daran bestehen, deshalb hier eine kleine Anleitung:
Ausgangslage:
Es soll ein git Repo auf dem openHAB-Rechner eingerichtet werden, welches dann von einem Desktoprechner bearbeitet wird.
openHAB läuft bei mir auf einem AMD Geode Board welches ich mit einem minimalen Ubuntu aufgesetzt wurde. (Stichwort debootstrap)
openHAB wurde unter "/opt/openhab" installiert und läuft unter dem Benutzer "openhab". Zugriff auf das System hat man über SSH direkt per root-User.
git ist auf dem System installiert. (apt-get install git)
Benutzerkonfiguration:
Wie gesagt läuft openHAB unter dem Benutzer "openhab" welcher ansonsten keine Rechte hat und auch nicht für SSH-Zugriff benutzt wird. Alle Dateien unter "/opt/openhab" gehören aber diesem Benutzer. Und er hat ein Home-Verzeichniss unter "/home/openhab"
Der Benutzer muss auch ein Loginpasswort haben, welches wir für git benutzen werden. (passwd openhab)
Über diesen Benutzer erfolgt der git-Zugriff, dafür wird die Login-Shell auf eine git-shell beschränkt:
Code:
usermod -s /usr/bin/git-shell openhab usermod -d /home/openhab
Nun müssen die git Befehle für die git-shell aktiviert werden:
Code:
mkdir /home/openhab/git-shell-commands cp /usr/share/doc/git/contrib/git-shell-commands/list /home/openhab/git-shell-commands/ cp /usr/share/doc/git/contrib/git-shell-commands/help /home/openhab/git-shell-commands/ chown -R openhab /home/openhab chmod +x /home/openhab/git-shell-commands/list chmod +x /home/openhab/git-shell-commands/help
Code:
Match User openhab X11Forwarding no AllowTcpForwarding no
Das "haupt" Repository liegt auf dem openHAB-Board im Homeverzeichniss von "openhab". Es muss ein so genanntes "bare repository" erstellt werden. Nur auf solche können "push's" durchgeführt werden:
Code:
mkdir /home/openhab/openhab-conf.git cd /home/openhab/openhab-conf.git git init --bare

Um zu erreichen das automatisch immer eine aktuelle Version der Konfiguration aus dem Repository an openHAB "gesendet" wird, richten wir ein "auto deployement" ein. Dies erreichen wir mit einem der Hook-scripts, welche automatisch von git aufgerufen werden:
Wir sind immer noch im git repository auf dem openHAB-Board, nun erstellen wir das Script "hooks/post-update":
Code:
#!/bin/sh git --work-tree=/opt/openhab/configurations --git-dir=/home/openhab/openhab-conf.git checkout -f
Auf dem Desktoprechner:
Nun wechseln wir auf den Rechner mit welchem wir die Konfiguration bearbeiten möchten und öffnen ein Terminal. (Nur für git, sollte also auch mit Windows klappen) wir Wechseln in ein Arbeitsverzeichnis und holen das leere Repository vom openHAB-Board:
Code:
git clone ssh://openhab@192.168.1.6/home/openhab/openhab-conf.git cd openhab-conf
Code:
git add . git commit -m "Inital commit with demo config" git push
Ich hoffe die Anleitung ist einigermassen verständlich. Ich wollte jetzt nicht zu detailliert werden, da je nach Setup sowieso Anpassungen nötig sind.
Gruss und viel Erfolg!
Jan
Kommentar