DevOps

  • Branching & Merging,  DevOps,  Git

    Branching Modell für den Betrieb in großen Umgebungen

    Ich habe in großen Rechenzentren mit verschiedenen Git Branch Modellen Erfahrungen gesammelt. Kurz: – git Flow ist meist zu komplex. – gitlab flow berücksichtigt einige wichtige Aspekte des Betriebs nicht. – Trunk Based Development funktioniert meines Erachtens nicht bei Service Providern, die keine Anwendungen entwickeln sondern nur betreiben, dies aber in hohen Installationszahlen mit vielen unterschiedlichen Releases. Der Betriebsaspekt wird meines Erachtens zu oft unterschätzt. DevOps ist eben genau Dev und Ops. Die meisten Branch Konzepte finden Lösungen für Entwickler. Die betrieblichen Aspekte eines langfristigen, stabilen Betriebes in großen Umgebungen werden oft nicht bedacht. Ein Beispiel eines Service Providers Der Service Provider administriert eine Anwendung, nennen wir Sie “Banking v1.0”,…

  • Git,  Github

    Githubs geheimes Repository

    Nur wenige kennen das “secret Repository” in Github. Github hat ein neues Feature eines besonderen, geheimen Repository bekannt gegeben. Mit diesem Repository können der Startseite eigene Informationen, als Art dynamisches Profil hinzugefügt werden. Es kann als einleitende Darstellung zur Person genutzt werden. Wie legt man ein “Secret Repository” an? Das ist sehr einfach: Auf der Seite Repositories mit “New Repository” ein neues Repoitory mit – das ist der Trick dem eigenen GitHub Benutzernamen anlegen. Das Ergebnis sieht bei mir so aus: Live kann man es hier sehen: https://github.com/slommi71

  • Branching & Merging,  DevOps,  Git

    Alternative zu git stash

    Bei der Arbeit in einem Feature Branch kann es passieren, dass aus verschiedenen Gründen ein anderer Branch kurz ausgescheckt und bearbeitet werden muss. Normalerweise verwendet man git stash dafür. Ich möchte kurz eine Alternative erläutern. Die Idee ist, einen zweiten worktree anzulegen und zu nutzen. Der bereits ausgescheckte Feature Branch ist in einem lokalen worktree auf der Festplatte abgelegt. Normalerweise hat man für jedes Projekt nur einen worktree. Daher muss man bei einem Wechsel der Branches die Änderungen committen oder zurückstellen/stashen. Der git Client bietet allerdings die wenig bekannte Option, einen zweiten worktree basierend auf einem Branch anzulegen. Der folgende Befehl legt in einem neuen Verzeichnis einen worktree des master…

  • DevOps,  Docker,  Java,  Middleware

    Befehl in mehreren Docker-Containern ausführen

    Möchte man bei vielen aktiven Containern bestimmte Inhalte abfragen, kann dies mit einer Schleife elegant als Einzeiler durchgeführt werden. Zuerst ist der Containername zu ermitteln und dann kann via docker exec der eigentliche Befehl im Container ausgeführt werden. Beispiel: Ermittlung der java Version in allen Containern (zur besseren Lesbarkeit auf mehrere Zeilen umgebrochen) for i in $(sudo docker ps --format '{{.Names}}') ; do echo "------" ; echo $i ; sudo docker exec $i bash -c "java -version" ; done —— important01.service openjdk version “1.8.0_171” OpenJDK Runtime Environment (build 1.8.0_171-b10) OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode) —— container02.service openjdk version “1.8.0_171” … usw.

  • Branching & Merging,  Git

    Ein sehr gutes Modell für GIT Branching & Merging

    Für mich persönlich hat sich das von Vincent Driessen beschriebene Branching Modell im Bereich der Software Entwicklung als sehr nützlich erwiesen. Er beschreibt es hier: A successful Git branching model Mit diesem Modell kann sehr flexibel auf die verschiedneen Anforderungen, wie – Neue Releases (Major und Minor Releases) – Arbeiten an neuen Features – Hotfixes parallel zu den Releases auch in größeren Teams reagiert werden. Wenn es darum geht, mehr oder wenig fertig angelieferte Softwareartefakte mit Hilfe eines Git/Gitlab Projekts zu deployen und konfigurieren, weiche ich allerdings oft davon ab. In diesem Fall ist oft ein Branching Konzept Branch = Stage) sinnvoll. Alsi ein Branch Dev für die Entwicklungssysteme, ein…

  • ansible,  DevOps,  Docker,  Jinja,  Middleware,  YAML

    Ansible Installation auf Windows 10 Systemen

    Ansible kann lokal in der Windows Bash installiert und zusammen mit Visual Studio Code (https://code.visualstudio.com/) effektiv betrieben werden. Die Windows Bash muss installiert sein. Die Bash kann über den Windows Store installiert werden. Einfach nach Ubuntu suchen. Nach der Installation die bash starten. PS C:\Users\user01> bash Die eigentliche ansible Installation erfolgt im Windows Linux Subsystem mit diesen Befehlen. Der letzte Befehl fügt die ansible Kommandos zum Pfad hinzu, damit sie direkt aufrufbar sind. sudo apt-get -y install python-pip python-dev libffi-dev libssl-dev pip install --upgrade pip pip install ansible --user echo 'PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc <em>"pip install --upgrade pip"</em> ist nur der Schönheit halber enthalten, damit pip auch aktuell ist, sonst gibt…