Ankündigung

Einklappen
Keine Ankündigung bisher.

Anleitung: Konfiguration mit git verwalten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Anleitung: Konfiguration mit git verwalten

    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:
    Code:
    usermod -s /usr/bin/git-shell openhab
    usermod -d /home/openhab
    Ebenfalls wurde das Homeverzeichniss angepasst (falls nötig)
    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
    Weiter werden die SSH-Rechte des Benutzers eingeschränkt: (Optional) in der Konfigurationsdatei "/etc/ssh/sshd_config", am Ende anfügen:
    Code:
    Match User openhab
            X11Forwarding no
            AllowTcpForwarding no
    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:
    Code:
    mkdir /home/openhab/openhab-conf.git
    cd /home/openhab/openhab-conf.git
    git init --bare
    Es ist darauf zu achten, dass "openhab" der Dateieigentümer für alle Files in seinem Homeverzeichniss ist. (chown -R openhabpenhab /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":
    Code:
    #!/bin/sh
    git --work-tree=/opt/openhab/configurations --git-dir=/home/openhab/openhab-conf.git checkout -f
    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:
    Code:
    git clone ssh://openhab@192.168.1.6/home/openhab/openhab-conf.git
    cd openhab-conf
    Nun kopieren wir unsere bestehende Konfiguration in dieses Verzeichnis, machen einen "commit" und schicken die Konfiguration wieder zurück zum Board:
    Code:
    git add .
    git commit -m "Inital commit with demo config"
    git push
    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

    #2
    Konnte jemand meine Anleitung nachvollziehen? Würde mich interessieren.

    Kommentar


      #3
      Klappt bei mir bestens. Danke

      Kommentar


        #4
        Zitat von NiJen Beitrag anzeigen
        Klappt bei mir bestens. Danke
        Danke für die Info! Das freut mich.

        Kommentar


          #5
          Git und Capistrano

          Ich nutze auch git für meine Versionsverwaltung der Konfiguration. Allerdings liegt das Repo auf dem GitHub server (Github.com).
          Zum Transfer auf meinen OpenHab Server nutze ich Capistrano.

          Nachteil:
          Den Transfer muss ich jedes Mal von Hand anstoßen, das es keinen PostPush-Hook gibt.

          Vorteil:
          Ich kann die Konfiguration vorher auf einem Spiegelsystem testen (cap staging deploy).
          Das Repo liegt auf einem Server außer Haus.
          Es nimmt weniger Platz auf meinem OpenHab Server ein, da ich nur eine beschränkte Anzahl an Releases liegen lasse.

          Mittlerweile liegt auch der Webapps folder in meinem Repo.
          Die Releases liegen auf meinem OpenHab Server im Home Verzeichnis, und ich nutze Softlinks dorthin, die ich allerdings noch manuell einrichte, weil ich mit Capistrano noch nicht so auf du und du bin.

          Kommentar


            #6
            Ein komprimiertes git-Repo ist nicht wirklich größer als die ausgecheckten Dateien und nimmt auch kaum mehr Platz weg, wenn man zehn neue Versionen hinpusht.

            Ich würde da gar nicht mit Capistrano oder so rumspielen, sondern einfach auf dem Homeserver ein Repository einrichten, dessen post-push-Hook die Dateien in das Konfigverzeichnis auscheckt.

            Mit der aktuellen Version brauchst du nicht mal das; git hat inzwischen gelernt, beim Push in die aktuell ausgecheckte Version diese selbstständig zu updaten.
            DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

            Kommentar

            Lädt...
            X