Ankündigung

Einklappen
Keine Ankündigung bisher.

TDD in einem SSH Tool

Einklappen

Neue Werbung 2019

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

  • TDD in einem SSH Tool

    Hallo leute,

    folgendes Problem:
    Ich habe einige Server auf denen ich einige Dinge ausprobiere, meistens gehe ich dabie so vor, dass ich mich per SSH und Cygwin damit verbinde dort auf dem Server projekte aus git repository auschecke, composer update , config anpasse, migration script laufen lasse und eventuelle server spezifische einstellungen für den Document Root vornehme..

    Console ist zwar schön und gut problem ist, ich kann mir nicht alle ips und zugänge merken und selbst dann muss ich auf dem server noch kurz nachsehen was für eigenheiten der server denn hat.

    Also dachte ich mir, ich baue mir mal ein Tool(in PHP Versteht sich). Dort soll man Server eintragen können vom server würde ich dann über ssh mit Metadaten holen (Festplatten größe, prozessor, OS usw..) und dann einen kleinen Remote Desktop mit dem ich durch das Dateisystem gehen kann, Dateien anlegen/löschen/verlinken(symlinks) und eventuell noch sonderbefehle ausführen kann(git clone, composer update oder irgend ein shell script)

    Eigentlich garnicht so schwer, um es natürlich sauber zu erstellen mach ich das Ganze Test Driven und schon kommen bei mir die Ersten Probleme.

    Also lokal starte ich eine leere Vagrant Ubuntu Box und führe meine tests aus.
    Auf Travis CI könnte ich dann glaub ich garnicht mehr machen(wüsste nicht dass man auf Travis ein Vagrant server aufsetzen kann, müsste ja lange dauern allein das herunterladen der images)

    Faken kann ich das Ganze eher schlecht, denn das was ja die Geschäftslogik ist, steckt in den Konkreten klassen drin.

    Und auch fühlt sich das Ganze scheiße an dass ich auf jedenfall eine Vagrant maschine brauche um meine Tests ausführen zu können

    Vielleicht hat ja jemand hier eine Idee wie man ssh und TDD kombinieren könnte?
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik


  • #2
    Console ist zwar schön und gut problem ist, ich kann mir nicht alle ips und zugänge merken und selbst dann muss ich auf dem server noch kurz nachsehen was für eigenheiten der server denn hat.
    hier böte sich eine eigene namesauflösung an.
    die maschinenspezifischen daten lassen sich per .profile beim login ermitteln.

    Kommentar


    • #3
      Zitat von moma Beitrag anzeigen
      hier böte sich eine eigene namesauflösung an.
      die maschinenspezifischen daten lassen sich per .profile beim login ermitteln.
      selbst namen, ich pfelge aktuell alles in einer xls Datei, auch zusätzliche infos wie "Database Server" ,"Deployer Server","PHPCi Server" usw.. also verwendungszweck, irgendwie ist das Ganze oldscool, auch wenn ich nicht so oft was auf den Servern mache wäre es dennoch eine hilfe.

      ich denke ich komme wohl nicht herum aufm travis nur interne dinge oder gefakte dinge zu testen und reale tests dann lokal ausführen(TestSuites splitten)
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

      Kommentar


      • #4
        bei der namesauflösung dachte ich auch an sowas wie txt records.

        libc/kernel/version verschiedener einegsetzter dienste und püfsummenvergleiche(da kannte ich tiger noch nicht) habe ich mir früher immer über die .profile gezogen.

        von TDD hab ich aber noch weniger als gar nichts plan, therefore -> out.

        Kommentar


        • #5
          Jetzt mal ab von der eigentlichen frage (die sich mir auch nich ganz erschließt), hört sich das für mich an wie https://forge.laravel.com/, nur eben self-hosted. Klingt interessant - wenn du da am Ende was brauchbares raus hast kannst du es ja mal opensourcen

          Kommentar


          • #6
            Zitat von alxy Beitrag anzeigen
            Jetzt mal ab von der eigentlichen frage (die sich mir auch nich ganz erschließt), hört sich das für mich an wie https://forge.laravel.com/, nur eben self-hosted. Klingt interessant - wenn du da am Ende was brauchbares raus hast kannst du es ja mal opensourcen
            naja ich werde ja da nicht vagrant oder so mit PHP umsetzen, ledeglich die shell kommandos die ich immer benutze über eine GUI weiterleiten.

            habs natürlich Opensourced

            https://github.com/BlackScorp/adminr...st.php#L28-L34 das ist halt die Stelle die ich hässlich finde und mit fällt nicht ein wie ich es besser machen könnte :/
            apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

            Kommentar


            • #7
              Vielleicht etwas OT:

              Arbeitest du mit Putty?
              Dann musst du dir auch in aller Regel keine Passwörter mehr merken. Du erzeugst dir einfach eine (durch ein Masterpasswort geschützte) private Schlüsseldatei (private-key) und einen dazugehörigen Public-Key, den du auf den Server packst. Unter windows kannst du dafür das Tool PuTTYgen verwenden. Anleitungen findet man in ausreichender Menge im Netz, so dass ich mir hier erst mal eine Anleitung spare. Wenn Fragen sind, beantworte ich die aber gerne.

              Zugänge über PKI
              Damit so ein Zugang nachher via Putty funktioniert, beraucht man eigentlich nichts, als in Putty die verschiedenen Zugänge samt Benutzernamen zu hinterlegen. Das heisst, dass im Feld "Host Name" nachher sowas steht wie "benutzer@ip" oder "benutzer@hostname". Die verschiedenen Konfigurationen kann man dann auch speichern und per doppelklick aktivieren. Der private Schlüssel muss nicht in Putty hinterlegt werden:

              Zugangsautomatisierung via Pageant
              Wenn du dir ein Putty über den Installer auf deinem Windows-System installierst, dann wird dir gleich auch Pageant mitgeliefert. Das Tool läuft im Hintergrund und hält die entsperrten Keys sicher vor. Putty muss dann nicht mehr speziell konfiguriert werden. Im Standard hast du unter Connection > SSH > Auth schon einen Haken bei "Attempt authentication using Pageant" aktiviert.

              Bei mir ist es so, dass ich häufig mit virtuellen Maschinen auf Basis von KVM arbeite. Dabei melde ich mich auf dem Hostrechner an und gehe von dort aus auf eine VM. Damit die Anmeldung via PKI immer noch funktioniert, muss ich in Putty zusätzlich "Allow agent forwarding" aktivieren.

              GUIs via Putty nutzen
              Ab und an ist es Sinnvoll, ein Gnome- oder KDE-Programm zu starten um darüber Einstellungen am System vorzunehmen oder einen Firefox zu starten um schnell irgendwas zu checken etc. Für diesen Zweck installiert man sich Lokal unter Windows sowas wie XMing und aktiviert in Putty unter Connection > SSH > X11 die Option "Enable X11 Forwarding". XMing ist ein X-Window-Emulator. Nicht besonders schön, aber tut. Besser ist das (nicht wirklich teure) MobyXTerm. Kann praktisch das gleiche wie Putty - nur eben etwas besser. Besonders diejenigen, die XMing's X-Forwarding nicht so cool finden, werden hier eine starke Verbesserung erleben.

              Btw: Die Anmeldung von GIT an einem fremden Server via ssh (oder git://) funktioniert auch via PKI. Man braucht also nachher keine Zugangsdaten mehr irgendwo einzutragen - man muss nur noch Hostnamen und Benutzernamen kennen, oder die fertigen Credentials in Putty hinterlegt haben.

              Anmerkung: Manche Hoster sind in diesem Bereich etwas rückständig und erlauben die Anmeldung via PKI nicht. Das ist aber nur äußerst Selten der Fall. Wenn man also Probleme bei der Anmeldung via PKI hat, dann sollte man erst einmal davon ausgehen, dass es an der eigenen Konfiguration scheitert, oder der Provider gibt hierzu ein klares Statement ab, warum das nicht unterstützt wird. Danach kann man dann den Hoster guten Gewissens wechseln
              Standards - Best Practices - AwesomePHP - Guideline für WebApps

              Kommentar


              • #8
                Ich wüsste auch nicht, was gegen Putty spricht. Dort kannst Du doch sämtliche Zugänge unter beliebigen Namen speichern.

                Kommentar


                • #9
                  Naja das Problem mit Putty ist, dass es nur auf einem PC ist, bin ich irgendwo an einem anderen PC und möchte mal kurz was aufm server nachschauen geht es nicht mehr, es ist halt nicht zentralisiert.

                  Mit Vagrant als Testmachine laufen ja die tests wunderbar durch, kann dann sogar andere OS auf den machinen für meine Tests installieren.

                  Neben dem Anlegen von dateien will ich dinge einbauen wie ein "Snippet Manager" man soll an einer stelle shell scripte oder php scripte verwalten um diese dann hochladen zu können und auf dem server auszuführen.

                  wie gesagt, alles was ich mit SSH erledige(mit Cygwin oder Putty) möchte ich auf eine zentrale stelle übertragen und bedienung vereinfachen
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                  Kommentar


                  • #10
                    Bei mir gibt es keine Möglichkeit mehr, sich mit Passwörtern anzumelden. Zu unsicher und unkomfortabel.
                    Standards - Best Practices - AwesomePHP - Guideline für WebApps

                    Kommentar


                    • #11
                      Zitat von rkr Beitrag anzeigen
                      Bei mir gibt es keine Möglichkeit mehr, sich mit Passwörtern anzumelden. Zu unsicher und unkomfortabel.
                      herrje.. die anmeldung ist doch sowas von egal ob nun pw oder public key, manchmal will ich einfach eine php datei aufm server anlegen, zunächst muss ich sehen welches betriebsystem um zu wissen /var/www oder /srv/www oder sonstige einstellungen, dann öffne ich i.d.r mc oder vi und tippe da den code ein oder ich nutze scp um dateien auf den server zu schieben ich meine wir haben 2014 und ich nutze IMMERNOCH eine konsole,

                      da ich eigentlich nicht so oft dinge auf dem server einstelle ist es umso nerviger da ich mir die befehle auch ab und zu ergooglen muss

                      und ihr schmeißt euch auf Putty und Public Keys..

                      was wenn ihr gerade einen frischen server habt? der public key muss auch erstmal hochgeladen werden, wäre es nicht toll über ne gui zugangsdaten einzutragen und dann sagen "add key to authorized_hosts"? oder wenn jemand anders zugriff auf den server kriegen soll usw usw.. es gibt halt viele dinge die nervig über console abzuwickeln sind

                      mir gehts halt darum wie ich die befehle automatisiert testen kann, ich kann halt schlecht eine virtuelle machine faken und eine virtuelle machine kann ich auch nicht auf travis starten, und selbst wenn vagrant dort ginge, würde es ja dauern die virtual boxes herunterzuladen, müsste dann immer auf meine test ca 20 min warten(+ die übliche queue + mehrere PHP versionen). Das ist das aktuelle Problem
                      apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                      Kommentar


                      • #12
                        Was spricht eigentlich gegen ein eigenes Repo mit allerlei nützlichen shellscripten, halt für alles mögliche was man so braucht? Wenn Du z.B. beim Einrichten eines neuen Servers bequem bestimmte Public-Keys hinzufügen willst, wieso schreibst Du Dir dafür nicht einfach ein kleines bashscript und gut ist es:

                        addPublickey.sh server pubKeyPath

                        Diese Tools kannst Du dann nach Bedarf entsprechend vorkonfigurieren, schnell zu größeren Werkzeugen zusammenfassen und ggf. leicht auf allen Servern automatisiert verteilen.

                        vg
                        jack
                        -

                        Kommentar


                        • #13
                          Zitat von jack88 Beitrag anzeigen
                          Was spricht eigentlich gegen ein eigenes Repo mit allerlei nützlichen shellscripten, halt für alles mögliche was man so braucht? Wenn Du z.B. beim Einrichten eines neuen Servers bequem bestimmte Public-Keys hinzufügen willst, wieso schreibst Du Dir dafür nicht einfach ein kleines bashscript und gut ist es:

                          addPublickey.sh server pubKeyPath

                          Diese Tools kannst Du dann nach Bedarf entsprechend vorkonfigurieren, schnell zu größeren Werkzeugen zusammenfassen und ggf. leicht auf allen Servern automatisiert verteilen.

                          vg
                          jack
                          naja shell ist eben vom OS abhängig, es spricht nichts gegen shell scripte, jedoch gehen einige shell scripte nur auf einigen Linux systemen, ich will mich halt so gut es geht von der shell lösen und zentralisiert meine server verwalten können, unabhängig von meinem standort, ich bin sicher, ich bin nicht der Einzige der das will und es heißt ja nicht umsonst, dinge die schwer zu testen sind, sind falsch konzepiert, desswegen habe ich ja hier gefragt ob man es nicht irgendwie richtig machen kann
                          apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                          Kommentar


                          • #14
                            Jeder MA hat seinen PublicKey. Den muss man einmal hinterlegen und fertig.

                            http://blog.shvetsov.com/2010/03/mak...-keys.html?m=1

                            Nachher hast du dann deine Keys in deinem Userprofil. Damit hat jeder User bei der Windows-Anmeldung an irgendeinem Rechner direkt immer seinen Zugang.
                            Standards - Best Practices - AwesomePHP - Guideline für WebApps

                            Kommentar


                            • #15
                              wir reden hier irgendwie an einander vorbei, ich weis wie man keys verwaltet, mit und ohne putty, nur ist es umständlich.mir gehts nicht darum ob und mit welchen befehlen ich das machen kann, auch ist die authentifizeirung kein thema

                              mir geht es darum wie ich unittests erstellen kann um die ssh2_exec befehle testen kann, ob das response davon korrekt ist. lokal läuft alles wunderbar da ich lokal eine test vagrant machine hochfahre und dann einfach unittests durchlaufe.

                              will ich ein CI service dranhängen wird es nicht mehr gehen.. also ist doch was nicht korrekt an meiner umsetzungsmethode?
                              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                              Kommentar

                              Lädt...
                              X