Seite wählen

NETWAYS Blog

Ich habe einen iX-Artikel für Dich: GitLab, GitLab, GitLab

Servus zusammen,

Dinge die man selbst gelernt hat, anderen Leuten beizubringen und helfend beiseite zu stehen, ist ein echt gutes Gefühl. Bei mir zieht sich das seit vielen Jahren durch die Icinga Community, einer der schönsten weil überraschensten Momente war wohl das Foto als „Danke“ auf dem Icinga Camp Berlin 2019. Dann kommt noch dazu, dass ich sehr gerne Dokumentation schreibe, oder einfach alles aufschreibe, was ich irgendwann mal brauchen könnte. Und vielleicht jemand anders, der mal meinen Job macht, und ich mich neuen Aufgaben widmen kann. Nach den ersten Gehversuchen mit der Icinga-Schulung (2.x natürlich ;)) haben das nunmehr meine Kollegen übernommen, und meistern die Wissensvermittlung mit Bravour. Wir Entwickler sorgen dann in unseren Releases dafür, dass auch ihnen nicht langweilig wird 🙂

Ich für mich habe aber auch festgestellt, dass man nicht nur „das eine“ machen soll und auch kann, sondern immer „über den Tellerrand“ schauen sollte. Und so kams, dass ich auf meiner ersten OSDC 2013 keinen Dunst von Puppet, Elastic, Graphite, Container-Plattformen oder CI/CD hatte. Auch die Jahre danach waren hart, und meine Kollegen durften mir viel erklären, etwa Ceph und OpenStack. Jetzt nach vielen Jahren hilft mir dieses Wissen in meiner tagtäglichen Arbeit, und auf eine gewisse Art und Weise bin ich stolz, wenn mich meine Kollegen und Freunde nach Themen fragen, die nicht unmittelbar mit Icinga zu tun haben.

Dann gibts da noch Git, die schwarze Magie der Entwickler. 2004 in Hagenberg hab ich meinen VHDL-Code noch in CVS eingecheckt, 2009 .at-DNS-Zonen-Files nach SVN geschoben und irgendwann dank Icinga auch Git gesehen. Um gleich mal mit „force push“ den Master zu zerstören – aller Anfang ist schwer. Seitdem ist viel passiert, und irgendwie hat jeder einen Git-Kniff, der gerne ausgetauscht wird. Die Nachfrage nach einer Schulung, seitens DEV (Kurzform für unsere Development-Abteilung), wurde immer größer und so wurde vor knapp 2,5 Jahren die Git-Schulung aus dem Boden gestampft.

Seither hat sich einiges getan, und wir haben unsere Open-Source-Entwicklung vollständig auf GitHub migriert, sowohl Icinga als auch NETWAYS. Aus dem vormaligen self-hosted Gitorious wurde dann mal ein GitLab, und mit jedem Release kam etwas neues dazu. GitLab verwenden wir an vielen Stellen – intern fürs Infrastrukturmanagement, betreut von MyEngineer im Hosting, als App in NWS und natürlich für Kunden und interne Projekte auf git.netways.de und git.icinga.com. Die Möglichkeiten, die einem CI mit den Runnern bietet, sowie den Merge-Request-Workflow haben wir seitdem bei uns stetig etabliert und ausgebaut.

All diese Erfahrungen aus der Praxis, und die tagtägliche Arbeit lassen wir in die neu gestaltete GitLab-Schulung einfliessen. Im Vortrag von Nicole und Gabriel auf der OSDC 2018 habe ich dann auch endlich mal Auto-DevOps verstanden und die Web IDE besser kennen gelernt. All das und noch viel mehr erzähle ich Schulungsteilnehmern im Kesselhaus und freu mich über die gemeinsamen Lernerfolge.

© 2019 Heise Medien GmbH & Co. KG

Doch damit hats nicht aufgehört – nachdem ich letztes Jahr für die IX einen Artikel zu IoT-Monitoring rund um Icinga, Elastic, Graylog und MQTT schreiben durfte, hab ich auch GitLab mit Golang in den Raum geworfen. Es ist ein bisserl Zeit ins Land gegangen, und ich hab dank IcingaDB auch mehr Golang gelernt. Im neuen Jahr hab ich eine GitLab-Schulung gehalten, und mich am Wochenende drauf hingesetzt und für die aktuelle iX 04/19 einen Artikel über GitLab und CI/CD geschrieben. Und auch vorab die GitHub Actions evaluiert, wo ich netterweise einen Invite habe 🙂

Wer mich kennt, weiss, dass ich endlos schreiben und reden kann über Dinge, die mir Spass machen. So empfehle ich Dir zur Lektüre auch einige Kaffee-Tassen (und falls vorhanden: Dragee-Keksi). Soferns dann noch offene Fragen gibt, komm einfach auf uns zu – egal ob Workshops, Schulungen oder Consulting, wir kriegen das hin, dass Dein GitLab genauso schnurrt wie unseres 🙂

Bevor ich es vergesse, auf der OSMC 2019 mach ich einen GitLab-Workshop rund um DevOps-Workflows und CI. Die Zeit vergeht eh so schnell – gleich anmelden 😉

Wir lesen uns – Icinga 2.11 wartet und nächste Woche ist Henrik aus der Schule wieder da. „Mein“ Azubi der in die Welt von Icinga Core eintauchen darf, ich werd alt ❤️

 

 

GitLab CI + Docker + Traefik = ❤️

So wie vermutlich einige, bin auch ich zur Zeit sehr von GitLab und dessen CI/CD Features angetan. Vor einigen Monaten habe ich angefangen, für meine privaten Webprojekte eine Template .gitlab-ci.yml zu erstellen, welche für jeden Commit, auf jedem Branch, automatisch Docker Images baut und diese in meiner Docker-Umgebung mit zum Branch/Projekt passender Subdomain und SSL-Zertifikat bereitstellt.

Um zu funktionieren benötigt das ganze eine erreichbare Docker-API, ein darauf laufendes Traefik, ein Docker-Netzwerk namens Proxy (Traefik muss dieses auch nutzen) und einen Account + Repository auf hub.docker.com. Das ganze kann aber recht einfach umgeschrieben werden, falls man seine eigene Registry verwenden möchte.

Ablauf beim Commit:

  1. Bauen und Pushes des Images (Tag => Branch + Commit-Hash)
  2. Umbenennen des alten Containers, falls vorhanden (Suffix ‚-old‘ wird angehangen)
  3. Erstellen des neuen Containers (Name => Deployment Domain bsp. master.dev.domain.tld)
  4. Löschen des alten Containers
  5. (Optional) Löschen & neu erstellen des Produktionscontainers, falls der Commit auf dem Masterbranch stattgefunden hat (Muss durch Button ausgelöst werden und läuft wie Schritte 2 bis 4 ab)
  6. Neue Container stehen unter den Deployment-Domains zur Verfügung

Pipeline eines Commits auf Master/andere Branches (Deploy auf Produktion kann durch „Play“-Button ausgelöst werden):

Pipeline eines Commits auf andere Branches:

Für jeden Branch wird auch ein Environment erstellt, welches über Operations/Environments in GitLab verwaltet werden kann.
Hier können Deployments angesehen, gelöscht, in Produktion ausgerollt und auf einen früheren Stand zurückgesetzt werden:

Zur Nutzung des Templates in einem Projekt wird ein Dockerfile im Repository, ein paar CI/CD-Variablen, und das Template selber benötigt.

Benötigte CI/CD-Variablen:

CI_DEV_URL_SUFFIX (Domain-Suffix der Development-Umgebungen): dev.domain.tld
CI_PRODUCTION_URL (Domain der Produktionsumgeben): domain.tld
CI_DOCKER_HOST (Adresse & Port der Docker-API): docker.domain.tld
CI_REGISTRY_IMAGE (Image-Name auf hub.docker.com): supertolleruser/supertollesoftware
CI_REGISTRY_USER (Docker-Hub Benutzer): supertolleruser
CI_REGISTRY_PASSWORD (Passwort des Docker-Hub Benutzers): supertollespasswort
CI_TRAEFIK_PORT (Port der Webanwendung im Container): 8080

Da das ganze Projekt bis jetzt nur Images baut und Container bereitstellt, könnten hier natürlich noch Tests eingebaut werden um das ganze abzurunden.

Zur Zeit arbeite ich an einer Umstellung auf Kubernetes und werde, sobald abgeschlossen, auch davon berichten.

GitLab Training v2.5.0 released

We have released v2.5.0 of our GitLab training today. Based on the feedback from previous trainings, and many things learned together with the students, we aim for the next classes already.

Dive deep into Git rebase, merge, squash, cherry-pick, get to know real-life development workflows and explore the possibilities of CI/CD pipelines and even more fancy GitLab features. Check our training schedule and register now!

Monthly Snap November


 
Remember one month ago? The first talks were about to start soon, you had your first coffee, enjoyed the rich Holiday Inn breakfast, took your journal, in which you had your plan for the day scetched, you were happy to meet an old friend in the hallway on your way to Saal Jacobi, where Bernd Erk was preparing to kick-off OSMC. …
OSMC – good times! Take some of its spirit with you into the cold and dark december days and let it warm your heart like a cup of hot Christkindlesmarkt mullet wine.

Form OSMC to Open Infrastructure

How? Make yourself a cup of hot wine and read through OSMC 2018 – Day 1 and OSMC 2018 – Day 2 by Dirk, or OSMC 2018 – or: The Thirteen-Star Conference, in which our attendees share their experiences. Read Michi’s Hackathon stories and Dirk’s report about OSCAMP on Puppet. You’re more of a visual type?  Browse through our OSMC Archive and find all the videos, pics and slides.
Right after OSMC our NWS-Team hit the road to Berlin for OpenStack Summit. Check out their managed Open Infrastructure service at nws.netways.de – now with MyEngineer support!

Icinga Seminar & Berlin Camp

Lennart Betz continues his blogpost-seminar Icinga 2 – Monitoring automatisiert mit Puppet Teil 9: Profile and Teil 10: Profile Part II. Join the Icinga community in 2019: Icinga Camp Berlin: Call for Papers is running until Decemeber 31! Find all November Icinga updates here.

For the tech hearts

Achim tell you to Get your RadosGW metrics into Ceilometer. Loei explains the use and functionality of RFID & NFC. Niko shares Neuheiten beim IntelliJ-Update. Tim knows Ceph Mimic | Using loop devices as OSD
In git gud! Henrik tells the story of: How I Learned to Stop Worrying and Love my Code. Noah introduces you with GitKraken to a nearly perfect Git-Client, while Johannes shares another useful tool: PDF manipulieren mit pdftk.

Presents

In November Silke announced Black Friday mal ganz in Orange – Es darf gespart werden und Die neue Generation der SMSEagle NXS-97xx Linie stellt sich vor. It‘s always a good idea to check our Shop for special offers. Especially if you are looking for Christmas presents. In that sense: Entschleunigung vom Weihnachtsstress bei Netways!
Have a wonderful December and Christmas season! Stay tuned!

Neuheiten beim IntelliJ-Update

Ob Java12, Kotlin 1.3 oder Neuerungen für Git oder Editor-Features wie mehrzeilige To-do-Kommentare. Das alles erwartet einen in dem neuen großen Update der Entwicklungsumgebung: IntelliJ Idea.

Die Publisher von Jetbrains haben mit der neuesten Version 2018.3 das nächste große Update von Intellji Idea eingeleitet. Mit der Erneuerung kommen neben der Unterstützung von Programmiersprachenversionen noch viele andere Features, die folgende Inhalte liefern.

Neue Features für Java 12 und Kotlin 1.3

IntelliJ unterstützt jetzt das Preview-Feature für die Raw-String-Literale. (Bild: Jetbrains)
(Prewiew-Feature für die Raw-String-Literale)
Intellij Idea beinhaltet zukünftig mit der Version 2018.3 die Unterstützung der kommenden Java-12-Features. Eine Vorschau für die neue Raw-String-Literale kommt mit der im März 2019 neu erscheinenden Version der Programmiersprache. Die neue Anpassung der Java-IDE unterstützt die Funktion bereits auch mit entsprechenden Quick-Fixes, sprich ein Stück Code der durch diese Fix-Funktion markiert wird und entsprechende Lösungen vorschlägt. Doppelter und somit redundanter Code kann ab sofort auch in komplizierten Situationen erkannt werden. Solche Duplikate sind dann im Diff-Viewer einsehbar.
Redundante Bedingungen werden jetzt noch besser erkannt. (Bild: Jetbrains)
(Redundante Bedingungen werden jetzt noch besser erkannt.)
Jetbrains hat einige weitere Quick-Fix-Optionen ergänzt um redundanten Code zu beheben. Unter anderem zählt dazu der überflüssige Sortieraufruf bei einer darauffolgenden Nutzung der Min-Funktion, bei der der Java-Stream-API genauso wie die Erkennung bei vorangegangenen überflüssigen Bedingungen, die bereits durch eine darauffolgende verknüpfte Bedingung abgedeckt ist. Zudem erkennt Intellij mit der neuen Version die redundante Verwendung von Annotations für unterdrückte Inspektionen.
IntelliJ bietet bei einigen Code-Stellen eine automatische Migration zum neuen Kotlin 1.3. (Screenshot: Jetbrains)
(IntelliJ bietet bei einigen Code-Stellen eine automatische Migration zum neuen Kotlin 1.3.)
Zu den Java-Neuerungen hinzu kommt auch noch die Unterstützung von Kotlin 1.3. Damit die Migration des Projekts zur neuen Version vereinfacht werden kann, greift Intellij einem unter die Arme. Zum Beispiel kann man Imports und Kotlin-Dependencies automatisch anpassen lassen. Ebenso gibt es auch für Kotlin Inspektions- und Quick-Fix-Optionen sowie eine verbesserte Unterstützung für Multiplattformprojekte.

Verbesserung der Editor-Funktionen und Git-Integration

Der Editor selbst hat auch einige neue Neuerungen mitgebracht, z.B mehrzeilige To-do-Kommentare(siehe Bild/GIF) oder dass in der Statusbar die verwendete Anzahl an Leerzeichen für Einrückungen angezeigt wird. Falls die Einrückung nicht mit der Projekteinstellung übereinstimmt, wird dies entsprechend markiert und eine Lösung vorgeschlagen. Zusätzlich kommt Ihr über das Pop-up direkt zu den Editor-Config-Dateien für die jetzt auch Syntax-Highlighting sowie Code-Vervollständigung unterstützt wird.

Auch mehrzeilige To-Do-Kommentare sind mit der aktuellen IntelliJ-Version kein Problem mehr. (Bild: Jetbrains)
Bei Git hat sich auch einiges geändert wie zum Beispiel, dass Intellij jetzt Github-Pull-Requests unterstützt und die Funktion „History up to Here“ die gesamte Historie aufzeigt. Auch nützlich dürfte die Funktion sein, die es erlaubt, eine Datei aus einem anderem Branch zu kopieren. Einfach ein Rechtsklick auf die ausgewählte Datei und schon gelangt man ins Compare-Branches-Fenster.(siehe Bild)
Mit wenigen Mausklicks kann jetzt eine Datei von einem anderen Branch kopiert werden. (Screenshot: Jetbrains)
Neben der überarbeiteten Funktion zum Durchsuchen des gesamten Projekts hat Jetbrains einige weitere kleinere Neuerungen zur Verfügung gestellt. Das betrifft Kubernetes, Javascript und Maven. Alle Neuerungen diesbezüglich findet Ihr auf der Internetseite von Jetbrains unter diesem Blog.