DevOps

  • ansible

    Get systemd services in ansible plays

    Hi, this is a tip to get details about linux (e.g. systemd) services in an ansible play. Just use the ansible service_facts module. You can use it without passing any argument. – name: Populate service facts   ansible.builtin.service_facts: You can access services by using ansible_facts.services. As this is an dictionary, a single service is addressable by using ansible_facts.services[{{ service-name }}]. – name: show all service facts   debug:     var: ansible_facts.services[{{ service_name }}] A few more examples: – name: Retrieve data about single service   debug:     var: ansible_facts.services.httpd – name: get a particular service attribute   debug:     var: ansible_facts.services.httpd.state – name: Test (RHEL7 and higher) if service is up and running   fail:     msg: “Service httpd…

  • ansible,  DevOps

    use ansible module copy instead of template for small files

    In order to adapt files and their content on target servers I am used to using ansible copy module. owever, if you only have a small file with just one or a few lines, you can do so without creating a jinja2 template. Here is the little cheat: Just use ansible’s copy module. – copy:   content: “env: {{ my_environment_var }}”   dest: /app/env.cfg That’s it. This creates a file with variable content, without need to create a template.

  • Branching & Merging,  Git

    merge particular files in another branch

    Every now and then I am faced with the question of how I can transfer individual files from a feature branch. git cherry-pick is intended for taking over the contents of a commit. But if I only want to take over individual files, this tool is probably not the solution. In order not to make it too exciting, here is the simple answer: I want to explain it using a specific example. In the feature branch 426-great-new-feature I have the files iWwantThat.yml and alsoNeeded2.py. To transfer these two files and only these to the main branch, I switch to the main branch and run the git checkout: git checkout main…

  • Apache HTTPD,  DevOps,  Ubuntu

    HTTPS Setup für eine Flask Anwendung – Teil 2

    Im ersten Teil habe ich die Einrichtung des Ubuntu Servers für meine kleine Webanwendung für den isländisch Kurs beschrieben. Im zweiten Teil möchte ich kurz auf die HTTPS Einrichtung eingehen. Die DigitalOcean Anleitung für Ubuntu 18.04 funktioniert nicht unter Ubunt 20.x. Bitte darauf achren, die Anleitung für das eingesetzte Ubuntu Release (hier 20.04) zu verwenden, falls vorhanden. Das verwendete Repository ppa:certbot/certbot ist im Status DEPRECATED. Daher wird der Certbot für die Let’s Encrypt Zertifikate apt install python3-certbot-apache Ein Apache Virtual Host ist Vorausssetzung für die nächsten Schritte. Die Einrichung habe ich in Teil 1 beschrieben. HTTPS Zugriff durch die Firewall Der aktuelle Status der Firewall wird mit ufw abgefragt: sudo…

  • DevOps,  Flask,  Github,  Github Actions,  Python,  YAML

    Web Anwendung basierend auf Python Flask – Teil 3

    Der dritte Teil beschreibt die Webanwendung meines Isländisch Trainers. Ich habe den Quellcode auf Gihub veröffentlicht. Der hauptteil der Anwendung besteht aus 2 Webseiten. Die erste eröffnet eine Session und zeigt ein Wort aus einer Liste an. Die Wörterliste ist im yaml Format erstellt. Die Struktur entspricht einen Dictionary: Ein Zufallsgenerator suche ein Wort aus dieser Liste und zeigt die deutsche Übersetzung an. Der Lernwillige kann sich die Deklinaktion der Fälle in Singular und Plural, mit und ohne Artikel ansehen. Ob seine Kenntnisse richtig sind, zeigt Seite 2 nach Absenden des Formulars in Form eines simplen Buttons an. Die Lösungsseite zeigt die korrekten Deklinationen an und eine Link auf die…

  • Apache HTTPD,  DevOps,  Github,  Ubuntu

    Digitalocean Setup für eine Flask Anwendung – Teil 1

    Dieser Blog wird Teil einer Serie für eine Web Anwendung in Python auf einer Cloud Instanz. Ich habe mich für DigialOcean entschieden. Linode, Azure, GCP, … wären alle genau so gut für diesen Zweck. Die Anwendung wird aus einer Liste von Vokabeln ein Wort in Deutsch heraussuchen und anzeigen. Auf einer zweiten Seite wird die Übersetzung des Worts und die Deklination angezeigt. Im ersten Teil werde ich die Einrichtung des Servers beschreiben. Teil 2 wird die HTTPS Konfiguration behandeln. Teil 3 schliesslich beschreibt die Python Flask Anwendung und deren Deployment mit Github Actions. Teil 4 wird die Einrichtung der Subdomain is.hslomka.de und die Umleitung auf meinen Server beinhalten. Das Ergebnis…

  • Git

    git Einstellungen

    Ein paar Einstellungen für Git, die sich bei mir für effizientes Arbeiten bewährt haben: settings git config –global branch.autosetupmerge true git config –global push.default tracking Anzeige git config –global log.decorate short git config –global color.ui auto git config –global color.interactive auto git config –global color.diff auto git config –global color.branch auto git config –global color.status auto git config –global pager.status true git config –global pager.show-branch true git config –global format.numbered auto Abkürzungen / Aliasse git config –global alias.st status git config –global alias.ci commit git config –global alias.co checkout git config –global alias.ru “remote update” git config –global alias.br branch git config –global alias.cam “commit -a -m” Powershell Alias für…

  • 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…