Archiv des Autors: Jörg Kastning

Ansible Automates Frankfurt 2019

Am 25. Juni 2019 fand in Frankfurt am Main das Red Hat Event Ansible Automates statt. Da der Einsatz von Ansible einen kleinen Teil meiner Arbeit darstellt, folgten ein Kollege und ich der Einladung zu diesem kostenlosen Marketing-Event. Es folgt ein kurzer Erfahrungsbericht.

Die Veranstaltung wurde im 6. Stock (direkt unter dem Flachdach) des Fleming’s Hotel nahe des Mainufers durchgeführt. Die Klimaanlage gab ihr bestes, den Raum für die ca. 140 Teilnehmer auf einer angenehmen Temperatur zu halten und das Team von Red Hat gab sich große Mühe spannende Vorträge und Demonstrationen für die Hörer zu bieten.

Die Agenda umfasste nach einer Begrüßung Vorträge u.a. zu Themen wie Automation Culture, Network Automation, Best Practices und SAP HANA – Standardization with Ansible.

Die Organisation war gut, die Teilnehmer wurden mit ausreichend kalten und warmen Getränken sowie einem kleinen Mittagessen versorgt. Die einzelnen Vorträge dauerten zwischen 30 und 40 Minuten. Die Technik arbeite reibungslos und man konnte den Vortragenden gut folgen. Zum Ende eines jeden Vortrags gab es eine kurze Frage&Antwort-Runde, bei der die Teilnehmer die Gelegenheit nutzten nachzuhaken und durchaus auch Kritik zu äußern. Dies verlieh der Veranstaltung einen interaktiven Charakter.

In den Pausen und beim abschließenden Apéro bot sich zudem die Gelegenheit zum Gespräch mit den Teilnehmern und Vertretern von Red Hat.

Eindrücke von der Veranstaltung

Red Hat präsentierte im Rahmen dieser Veranstaltung zwei Fallstudien von der Nutzung von Ansible zum Deployment komplexer Umgebungen bei Kunden aus Deutschland. Ein Highlight war die Präsentation eines kompletten SAP HANA Deployments mit Alexa und Ansible in der AWS Cloud.

Als Systemadministrator viel mir bei diesen Präsentationen auf, dass sich diese primär um das Deployment drehten. Auf Fragen des anschließenden Betriebs und Aufgaben wie Wartung, Aktualisierung, etc. gingen die Beiträge nicht ein. Auf Nachfrage erfuhr man, dass hierzu keine Erfahrungen vorliegen oder noch an entsprechenden Lösungen gearbeitet wird. Schade. Sind doch gerade dies die Aufgaben, die meine tägliche Arbeit bestimmen und das SysAdmin-Leben teilweise sehr schwer machen. So muss ich sagen, da wo es für uns interessant wird, hörten die Vorträge meist auf.

Teilnehmer aus der Finanzbranche äußerten Kritik, dass Ansible, Ansible Tower und einige weitere der noch jungen Produkte, die gewünschte Enterprise-Qualität vermissen lassen, welche man von der Basis-Distribution gewohnt ist und die man auch für die übrigen Produkte erwartet. Das Team von Red Hat nahm die Kritik an und versprach diese mitzunehmen und bei der weiteren Entwicklung zu berücksichtigen. Ich werde die Entwicklung weiter beobachten und prüfen, ob sich einige der genannten Punkte wiederfinden lassen.

Einer der am häufigsten genannten Kritikpunkte, welcher auch mir sehr am Herzen liegt, sind die Update-Mechanismen. So halte ich Syntax-Änderungen bei Minor-Updates von Ansible für ein Unding. Können diese doch leicht dafür sorgen, dass meine Playbooks und Rollen nicht mehr funktionieren. Zum Glück ist die Zahl meiner Playbooks und Rollen heute noch sehr überschaubar und das Problem nicht groß. Für Kunden mit vielen hundert Playbooks stellt dies jedoch ein großes Ärgernis dar. Dies ist leicht nachvollziehbar, werden dadurch die Kosten auf Seiten des Kunden in die Höhe getrieben.

Keith Tenzer zeigte in seinem Vortrag, wie man mit Hilfe des Ansible Tower, GitHub und einer OpenStack Cloud eine CI/CD-Umgebung aufbauen und nutzen kann. Sein Fazit lautete, dass man heute nicht mehr auf die Qualität genutzter Softwarekomponenten oder Herstellerprodukte vertrauen kann, sondern alle Komponenten eigenen Tests unterziehen muss. Diese Ansicht teilten nicht alle Teilnehmer. So wurde der Einwand geäußert, dass man als Kunde für Enterprise-Qualität bezahle und diese auch erwarte. Schließlich zahle man Geld, um eigene Aufwände zu reduzieren und nicht zu steigern.

Ich schließe mich der geäußerten Kritik in Teilen an. Zwar halte ich umfassende eigene Tests für wichtig, richtig und unausweichlich, doch ist der Aufbau einer CI/CD-Umgebung zum Teil hochkomplex und mit einem nicht zu unterschätzenden Wartungsaufwand verbunden. So ist eine CI/CD-Landschaft für ein Hello-World-Programm sicher leichter zu gestalten, als z.B. für eine CampusManagement-Software.

Nun sehe ich CI/CD auch durch die SysAdmin-Brille. Für Entwickler und ihre Development-Workflows bietet CI/CD unbestreitbare Vorteile. Mir stellt sich bei der Betrachtung jedoch auch die Frage:

  • Wer betreibt die Cloud? Wieviel Aufwand bringt dies mit sich?
  • Wer betreibt und aktualisiert die Werkzeuge wie Ansible Tower, GitHub, etc. pp. und wie gut skalieren diese Werkzeuge?
  • Habe ich mit CI/CD wirklich weniger Aufwände und Kosten oder verlagern sich diese nur?

Es wird wohl keine pauschalen Antworten auf diese Fragen geben, hängen sie doch zu sehr von organisationsspezifischen Faktoren ab.

Persönliches Fazit

Insgesamt war es eine gelungene Veranstaltung, von der ich einige neue Eindrücke mitgenommen habe.

Es wurde deutlich, dass auch Ansible nicht die heilige Handgranate ist, welche alle IT-Herausforderungen im Handumdrehen bewältigt. Doch hat dies glaube ich auch kaum jemand erwartet.

Mir persönlich hat der Vortrag von Günter Herold über Automation Culture besonders gut gefallen. Er machte deutlich, dass Automatisierung keine Aufgabe von einzelnen Abteilungen oder Teams ist sondern nur Abteilungs- und Plattformübergreifend das volle Potenzial entfalten kann. Dies leuchtet ein, sind an einem Dienst bzw. Geschäftsprozess doch häufig mehrere komplexe Systeme beteiligt, welche erst im Zusammenwirken einen Mehrwert für die Organisation erbringen.

Fraglich bleibt, ob und wie wir in unserer Einrichtung von den Entwicklungen profitieren können. Sind wir doch eher klassisch organisiert und von DevOps noch weit entfernt. Doch müssen wir uns ja auch nicht komplett an Idealen ausrichten, sondern finden vielleicht einen guten und effizienten Mittelweg.

Lesezeichen: LaTeX-Schriftartenkatalog

Heute habe ich auf dem Blog vNotes einen Beitrag über den LaTeX-Schriftartenkatalog der TeX User Group aus Dänemark gelesen. In diesem Katalog finden sich diverse Schriftarten, welche bereits in der Distribution TeX Live enthalten sind. Neben der Vorschau der einzelnen Schriften werden auch konkrete Informationen zur Einbindung in eigene Dokumente gegeben.

Ich folge Viktors Empfehlung und setze hier ein Lesezeichen.

http://www.tug.dk/FontCatalogue/

Desktop-Linux – Wer die Wahl hat, hat die Qual

Vorwarnung: Dieser Artikel wird euch vermutlich nicht interessieren, wenn ihr nicht zufällig die gleichen Anforderungen an eine Linux-Distribution für den Desktop stellt wie ich. Mir selbst dient dieser Beitrag als Sammlung von Informationen und zum Vergleich von Distributionen, um schlussendlich eine neue Distribution für meinen Desktop-PC und meine beiden Notebooks auszuwählen. Falls euch langweilig ist oder ihr neugierig seid, dürft ihr natürlich gerne weiter lesen. ;-)

Umfeld

Auf meinen privaten Geräten läuft seit 2006 Ubuntu. Die Geräte haben dabei selten eine Neuinstallation erlebt, sondern wurden meist per Distribution-Upgrade auf eine neue Release aktualisiert. Leider klappt letzteres in jüngerer Vergangenheit zunehmend schlechter und unzuverlässiger. Eine Neuinstallation ist inzwischen einem Upgrade vorzuziehen, da sie meist schneller durchgeführt ist und weniger Nacharbeiten nach sich zieht.

Neben den zunehmenden Problemen mit dem Distribution-Upgrade hat mir Canonical in der jüngeren Vergangenheit ein wenig zu viel an meiner Lieblingsdistribution herumgepfuscht bzw. sie ver(schlimm)bessert. Dies ist der Auslöser, mir mal eine Alternative für den Desktop-Einsatz zu suchen.

Bei meinen Geräten handelt es sich um einen älteren Desktop-PC und zwei ThinkPads (T410 und X201). Dazu gesellt sich in der Peripherie noch ein Brother DCP-540CN, ein Synology DS213air. Alle Komponenten sind in das WLAN-Heimnetzwerk eingebunden. Die Hardware ist alt, doch funktioniert sie noch tadellos und erfüllt ihren Zweck. Daher möchte ich sie gerne noch einige Jahre weiter nutzen.

Anforderungen

Beruflich bin ich im BITS, dem Hochschulrechenzentrum der Uni Bielefeld, tätig und betreue dort diverse IT-Dienste und Themen. Da ich also bereits einen sehr großen Teil des Tages mit der Wartung, Pflege, Entstörung und (sofern noch Zeit ist) der Weiterentwicklung dieser Dienste verbringe, möchte ich mich daheim so wenig wie möglich mit diesen Tätigkeiten aufhalten. Die regelmäßige Installation von Sicherheits-Aktualisierungen ist obligatorisch, doch auf lange Fehlersuche und Behebung möchte ich daheim gerne verzichten.

Bei mir gilt Stabilität vor Bleeding Edge. Ich benötige nicht ständig neue Funktionen und die aktuellste Upstream-Version. Wenn eine Anwendung meine Anforderungen erfüllt und mit Sicherheits-Aktualisierungen versorgt wird, reicht mir das völlig aus.

Aktuell bieten mir die unter Ubuntu 16.04 LTS verfügbaren Anwendungen die Funktionalität, die ich benötige. Die auszuwählende Distribution sollte die entsprechenden Versionen in gleicher oder aktuellerer Version bereitstellen können. Sollte nur eine ältere Version einer Anwendung verfügbar sein, ist dies nicht automatisch ein Ausschlusskriterium. In diesem Fall ist die Anwendung zu testen, ob sie meinen Anforderungen genügt.

Ich wünsche mir einen möglichst großen Unterstützungszeitraum. Ubuntu bietet in den Versionen mit Long Term Support eine Unterstützung für 5 Jahre an. Damit bin ich bisher ganz gut gefahren und möchte mich deshalb in diesem Punkt nur ungern verschlechtern.

Bewertungskriterien

Wie ihr oben gelesen habt, habe ich keine knallharten und messbaren Anforderungen definiert, sondern lediglich Punkte genannt, die mir wichtig sind. In den folgenden Abschnitten werde ich mir eine Auswahl von Linux-Distributionen etwas näher ansehen und diese zuerst auf dem Papier und anhand meiner Erfahrungen miteinander vergleichen. Dabei bewerte ich folgende Kriterien:

  • Release-Zyklus
  • Support-/Life-Cycle
  • Paketverfügbarkeit und Versionsstand
  • Community

Für vorstehend genannte Kriterien vergebe ich Punkte nach folgender Tabelle. Dabei gehen alle Kriterien mit gleicher Gewichtung in das Endergebnis ein, sodass die Distribution mit den meisten Punkten am besten zu mir passen sollte.

Punkte
Beschreibung

0gefällt mir/funktioniert sehr schlecht
1gefällt mir/funktioniert schlecht
2Ist in Ordnung
3gefällt mir/funktioniert gut
4gefällt mir/funktioniert sehr gut

Als Referenz dient mir Xenial, für welches meine Bewertungstabelle wie folgt aussieht:

Ubuntu 16.04 LTS
NameWertBewertung
Unterstützungszeitraum5 Jahre bis April 20213
Release-ZyklusAlle 2 Jahre3
Communityubuntuusers.de4
Kernel4.42
systemd2292
gnome-shell3.18.42
Vim7.42
Firefox66.0.33
Thunderbird60.6.13
Evolution3.18.5.22
gThumb3.4.32
Evince3.18.22
Kile2.1.33
TeXlive20151
XSane0.9994
Summe38

Anmerkung: Bitte beachtet, dass dies hier eine sehr vereinfachte Form einer Bewertungstabelle für meinen privaten Zeitvertreib ist. Als Entscheidungstabelle für die Arbeit ist dieses Format ganz sicher nicht geeignet.

Ausgewählte Distributionen im Vergleich

Für den hier stattfindenden Vergleich habe ich mir folgende Distributionen angesehen (alphabetisch sortiert). Warum genau diese? Nun, entweder kenne ich sie schon oder sie wurden mir von Arbeitskollegen empfohlen.

  • Antergos
  • Arch Linux
  • CentOS
  • Debian
  • Fedora
  • Ubuntu

Antergos

Antergos basiert auf Arch Linux und folgt dem Rolling-Release-Prinzip. Ich möchte kein Rolling Release nutzen. Daher hört die Bewertung hier schon auf, da Antergos für mich nicht in Frage kommt.

Arch Linux

Arch Linux folgt ebenfalls dem Rolling-Release-Prinzip und scheidet daher ebenfalls von vornherein aus.

CentOS 7

CentOS wird aus den Quellen von Red Hat Enterprise Linux gebaut, zu welchem es binärkompatibel ist. CentOS ist nach eigenen Angaben ein Enterprise-Betriebssystem, welches mit langen Wartungszyklen aufwartet. So kann ein Release bis zu zehn Jahre genutzt werden, ohne dass Softwareversionen migriert werden müssen.

Zehn Jahre lang Ruhe. Das klingt verlockend. Grund genug, sich das aktuelle CentOS 7 auf dem Papier anzuschauen.

CentOS 7
NameWertBewertung
Unterstützungszeitraum10 Jahre bis Juni 20244
Release-ZyklusAlle 3-4 Jahre3
CommunityForum und Mailingliste2
Kernel3.10.02
systemd2192
gnome-shell3.28.33
Vim7.42
Firefox60.6.13
Thunderbird60.6.13
Evolution3.28.52
gThumb3.3.42
Evince3.28.22
Kile2.1.33
TeXlive20121
XSane0.9994
Summe38

Debian

Debian ist ein von der Gemeinschaft entwickeltes freies Betriebssystem und mein heimlicher Favorit. Mir gefällt die Idee, mich neben einer RPM-basierten Distribution auf der Arbeit,Ubuntu importiert den Großteil seiner Pakete aus Debian Unstable. Für einen Teil dieser Pakete übernimmt nach dem Debian Import Freeze die Firma Canonical die Pflege. Der größte Teil landet hingegen in der Komponente universe, wo er von den MOTU betreut wird (oder gar nicht). Die Folge dieses Vorgehens: Wenn Pakete in Debian Unstable während des Debian Import Freeze kaputt und unbenutzbar sind, werden sie in die Ubuntu-Paketquellen importiert und bleiben mit großer Wahrscheinlichkeit für die Lebensdauer des jeweiligen Releases daheim mit einer DEB-basierten Distribution zu beschäftigen, um in beiden Paketformatwelten auf dem Laufenden zu bleiben.

Debian Stable steht in dem Ruf rock solid zu sein, was meinem Wunsch nach einer sehr stabilen Distribution entgegen kommt. Die Softwarepakete in Debian Stable gelten gemeinhin als sehr gut abgehangen. Kritiker bezeichnen sie auch als hoffnungslos veraltet. So lange sie die von mir gewünschte Funktionalität bieten, ist mir das Alter egal. Falls ich mich für Debian entscheide, werde ich auf die Veröffentlichung von Buster warten, welche mit folgenden Werten aufwartet.

Debian 10 (Buster)
NameWertBewertung
Unterstützungszeitraum3 Jahre (+2 Jahre LTS)2
Release-ZyklusCa. alle 2 Jahre3
CommunitySee Support Page2
Kernel4.19.163
systemd2412
gnome-shell3.30.24
Vim8.13
Firefox60.6.13
Thunderbird60.6.13
Evolution3.30.52
gThumb3.6.22
Evince3.30.22
Kile2.9.922
TeXlive20183
XSane0.9994
Summe40

Fedora

Bei Fedora handelt es sich wiederum um eine RPM-basierte Distribution. Diese wartet mit recht aktuellen Softwarepaketen auf und gibt sich selbst als für Desktops, Workstations, Laptops und Server geeignet. Fedora wird auch gern als Testlabor für RHEL bezeichnet, da viele Entwicklungen, die sich hier etablieren konnten, später in RHEL übernommen werden.

Die Aktualität hat ihren Preis. So kommt Fedora mit recht kurzen Releasezyklen daher, was für mich ganz klar Punktabzug bedeutet.

Fedora Rawhide
NameWertBewertung
Unterstützungszeitraum13 Monate0
Release-ZyklusAlle 6 Monate0
Communityfedoraforum.de2
Kernel5.13
systemd2422
gnome-shell3.32.14
Vim8.13
Firefox66.0.33
Thunderbird60.6.13
Evolution3.33.12
gThumb3.7.13
Evince3.32.02
Kile2.9.922
TeXlive20183
XSane0.9994
Summe36

Ubuntu LTS

Basierend auf Debian laufen die Ubuntu LTS Releases seit Jahren auf meinen Rechnern. Da ich mit dieser Distribution die meiste Erfahrung habe und dadurch auch einige ihrer Macken kenne, fällt es mir schwer, bei einer Bewertung neutral zu bleiben. Doch werde ich mir Mühe geben.

Ubuntu importiert den Großteil seiner Pakete aus Debian Unstable. Für einen Teil dieser Pakete übernimmt nach dem Debian Import Freeze die Firma Canonical die Pflege. Der größte Teil landet hingegen in der Komponente universe, wo er von den MOTU betreut wird (oder gar nicht). Die Folge dieses Vorgehens: Wenn Pakete in Debian Unstable während des Debian Import Freeze kaputt und unbenutzbar sind, werden sie in die Ubuntu-Paketquellen importiert und bleiben mit großer Wahrscheinlichkeit für die Lebensdauer des jeweiligen Release kaputt und unbenutzbar. Dieses Vorgehen halte ich persönlich für ganz großen Schwachsinn.

Als einzigartig hingegen empfinde ich die deutschsprachige Community ubuntuusers.de. Auch wenn hier in einigen Themen auch mal die Fetzen fliegen, ist der Umgangston doch überwiegend freundlich. Hier fand ich in der Vergangenheit stets wertvolle Hilfe bei kleinen und auch großen Problemen

Ubuntu 18.04 LTS
NameWertBewertung
Unterstützungszeitraum5 Jahre bis April 20233
Release-ZyklusAlle 2 Jahre3
Communityubuntuusers.de4
Kernel4.153
systemd2372
gnome-shell3.28.32
Vim8.02
Firefox66.0.33
Thunderbird60.6.13
Evolution3.28.52
gThumb3.6.12
Evince3.18.42
Kile2.9.911
TeXlive20171
XSane0.9994
Summe37

Schlussfolgerung und selbstkritische Reflexion des Distributions-Vergleichs

Ubuntu 16.04 LTSCentOS 7Debian BusterFedora RawhideUbuntu 18.04 LTS
3838403637

Sieg nach Punkten für das hoffentlich bald erscheinende Debian Buster!

Dass mein heimlicher Favorit das Rennen gemacht hat, verwundert nicht. Nüchtern und bei Licht betrachtet muss ich gestehen, dass der oben stehende Vergleich Makulatur und nicht objektiv ist. So ist der Vergleich und die Bewertung von Software-/Paket-Versionen nicht geeignet, um zu bestimmen, wie gut meine funktionalen Anforderungen erfüllt werden. Dazu hätte es eines praktischen Tests der einzelnen Versionen bedurft.

So offenbarte ein praktischer Vergleich von kile in Version 2.9.91, dass mir dieses in der Benutzung deutlich schlechter gefällt, als die ältere Version 2.1.3. Und was für kile gilt, mag selbstverständlich auch für andere Anwendungen gelten.

Ein weiterer großer Schwachpunkt des Vergleichs ist der Punkt ‚Community‘. Aus persönlicher Erfahrung kenne ich nur die ubuntuusers.de wirklich gut, weil ich nur hier seit vielen Jahren selbst aktiv bin. Die Bewertung aller anderen Communities und Unterstützungsmöglichkeiten basiert auf deutlich weniger Erfahrungen und Teils sogar nur auf Hörensagen. Eine objektive Bewertung ist so natürlich nicht möglich.

Streng genommen handelt es sich bei dem angestellten Vergleich um Humbug und Mumpitz. Bitte nicht nachmachen!

Mir selbst reicht er jedoch als Indikator, dass das kommende Debian Buster meine Anforderungen daheim gut erfüllen könnte. Es wird daher nach der Veröffentlichung auf einem meiner Geräte installiert und in der Praxis erprobt.

Tja, wenn ich ehrlich bin, ist dieser Artikel wenig hilfreich. Zum Trost sei gesagt, dass er mir half, ein wenig die Zeit bis zum Release von Buster zu überbrücken.

Verzeichnis „/.well-known/“ überwachen

In einem bei heise online veröffentlichten Artikel ist zu lesen, dass das Verzeichnis „/.well-known/“ ein beliebtes Malware-Versteck auf gehackten Webservern ist. Der heise-Artikel empfiehlt Admins, den Inhalt von „/.well-known/“ und ggf. weiterer Unterverzeichnisse von Zeit zu Zeit zu prüfen. Um dies nicht manuell tun zu müssen, biete ich mit diesem Artikel ein Tutorial, das beschreibt, wie man diese Aufgabe mit Hilfe von systemd.path-Units automatisieren kann.

Ziel ist es, dass das System in dem Fall, dass sich der Verzeichnisinhalt von „/.well-known/“ oder eines darin enthaltenen Unterverzeichnisses ändert, eine E-Mail mit einem aktuellen Verzeichnis-Listing an eine konfigurierte E-Mail-Adresse sendet.

Update 2019-06-20: Neuen Abschnitt eingefügt

Voraussetzungen

Um diesem Tutorial folgen zu können, muss das betrachtete System

  • systemd als Init-System verwenden und
  • in der Lage sein, E-Mails zu versenden.

Darüber hinaus werden Kenntnisse in der Bearbeitung von Dateien mit einem Texteditor im Terminal vorausgesetzt.

Hinweis: Das Tutorial wurde mehrfach erfolgreich unter Ubuntu Bionic getestet. Der Leser Daniel hat versucht es unter Ubuntu Xenial nachzuvollziehen, was jedoch nicht geglückt ist. Details dazu finden sich in den Kommentaren zum Artikel.

Erstellung der Path-Unit

Im Verzeichnis /etc/systemd/system/ wird die Datei beispiel.path mit folgendem Inhalt erstellt. Der Dateiname kann selbstverständlich frei gewählt werden. Er muss lediglich auf .path enden.

[Unit]
Description="Meine '/.well-known/' Verzeichnisse auf Änderungen hin überwachen"

[Path]
PathModified=/var/www/site1/public/.well-known/
PathModified=/var/www/site1/public/.well-known/acme-challenge/
PathModified=/var/www/site2/public/.well-known/
PathModified=/var/www/site2/.well-known/acme-challenge/
PathModified=/var/www/site3/public/.well-known/
PathModified=/var/www/site3/public/.well-known/acme-challenge/
Unit=beispiel.service

[Install]
WantedBy=multi-user.target

In obigem Beispiel wird davon ausgegangen, dass der Webserver drei verschiedene Seiten ausliefert, die jeweils über ein eigenes „/.well-known/“-Verzeichnis mit jeweils einem Unterverzeichnis verfügen.

In der Sektion [Path] wird mit PathModified= der absolute Pfad zu den zu überwachenden Verzeichnissen spezifiziert, während Unit= angibt, welche Service-Unit ausgeführt werden soll, wenn sich der Inhalt eines der spezifizierten Verzeichnisse ändert. Diese Unit soll gestartet werden, wenn sich das System im Multi-User-Mode befindet.

Erstellung der Service-Unit

Als nächstes wird die auszuführende Service-Unit erstellt. Diese sollte den gleichen Namen wie die Path-Unit haben, im Unterschied zu dieser jedoch auf .service enden. Die Datei beispiel.service wird ebenfalls im Verzeichnis /etc/systemd/system/ erstellt.

[Unit]
Description="Führt Skript aus, wenn eine Datei sich geändert hat."

[Service]
Type=simple
ExecStart=/home/oglattermann/skript.sh

[Install]
WantedBy=multi-user.target

In der Service-Unit wird definiert, was getan werden soll, wenn die dazugehörige Path-Unit ausgelöst wird. In diesem Beispiel soll das hinter ExecStart= angegebene Skript ausgeführt werden.

Erstellung des auszuführenden Skripts

Findet eine Änderung in einem der überwachten Verzeichnisse statt, wird folgendes Skript ausgeführt:

#!/bin/bash
MAIL_TEXT="/tmp/well-known"
MAIL_RCP="foo@example.com"
create_mail() {
cat >"${MAIL_TEXT}" <<EOF
Achtung, der Inhalt der '/.well-known/'-Verzeichnisse wurde verändert. Die Verzeichnisse haben aktuell folgenden Inhalt:

$(find /var/www/ -type d -name ".well-known" -exec ls -lRa {} \;)
EOF
}

send_mail() {
    /usr/bin/mailx -s 'Achtung: Inhalt von /.well-known/ geändert' ${MAIL_RCP} <"${MAIL_TEXT}"
}

create_mail
send_mail

Das obige Skript ist abends auf dem Sofa entstanden und erhebt nicht den Anspruch schön oder perfekt zu sein. Es erfüllt jedoch seinen Zweck und sendet eine E-Mail an eine angegebe Empfangsadresse. In der Mail werden alle „/.well-known/“-Verzeichnisse inkl. enthaltener Dateien und Unterverzeichnisse aufgelistet, welche sich innerhalb des Suchpfads /var/www befinden.

Die Überwachung scharf schalten

Um die Überwachung zu aktivieren, sind noch die folgenden Schritte mit root-Rechten auszuführen:

  1. Die Units zu aktivieren
  2. Die Path-Unit zu starten
sudo systemctl enable beispiel.path beispiel.service
sudo systemctl start beispiel.path

Zum Test kann man nun eine neue Datei oder ein Verzeichnis in einem der überwachten Pfade erstellen. Daraufhin, sollte man eine E-Mail erhalten, welche über die Änderung informiert.

Update 2019-06-20: Auffälliges Verhalten erkannt

In den letzten Tagen habe ich sporadisch eine E-Mail von meinem Server bekommen, welche mich über eine Änderung in den überwachten Verzeichnissen informieren sollte. Jedoch konnte ich im Inhalt der E-Mail keinerlei Änderung an den Verzeichnisinhalten erkennen. Diese waren wie erwartet leer.

Meine Hypothese warum ich dennoch eine E-Mail bekam war, dass die erfolgte Änderung umgehend rückgängig gemacht wurde. So dass die Verzeichnisse bereits wieder leer waren, als die Service-Unit ausgeführt wurde, welche mir die Verzeichnisinhalte per E-Mail sendet. Um diese Hypothese zu prüfen, habe ich folgendes Kommando ausgeführt:

# touch /var/www/site1/public/.well-known/test && rm /var/www/site1/public/.well-known/test

Der kurze Test bestätigte meine Hypothese. Es wurde wie erwartet eine Datei erstellt und direkt wieder entfernt. Die Path-Unit aktivierte die verknüpfte Service-Unit und ich erhielt eine E-Mail nach welcher der Inhalt von /var/www/site1/public/.well-known/ leer war.

Das beobachtete Verhalten empfinde ich als unschön, da ich so nicht mehr feststellen kann, was für eine Änderung stattgefunden hat und die E-Mail-Benachrichtigung damit nicht zum gewünschten Erkenntnisgewinn führt.

Noch ist unklar, ob dies einer fehlerhaften Konfiguration meinerseits, einem Bug, oder dem Design geschuldet ist. Falls jemand von euch einen besseren Einblick in diese Thematik besitzt, freue ich mich über euren Kommentar.

Ein Hinweis zum Schluss

Erwähnt werden muss, dass nur Änderungen signalisiert werden können, die vom Kernel ausgeführt werden. Führen andere Maschinen auf per Netzwerk eingebundenen Pfaden Änderungen durch, wird das nicht signalisiert.

https://www.my-it-brain.de/wordpress/unit-typ-systemd-path-kurz-vorgestellt/#comment-1624

Quellen und weiterführende Links

Man kann WhatsApp nicht entkommen

Bisher mache ich um WhatsApp einen Bogen. Ich möchte die Datenkrake nicht selbst noch weiter füttern und es stört mich nicht, dass ich meine knappe Zeit nicht auch noch auf/in WhatsApp verbringe.

Vor einigen Tagen wurde ich jedoch in Versuchung geführt, denn WhatsApp schien die einzige Möglichkeit zu sein, mit einem alten Bekannten in Kontakt treten zu können. Nach der Installation der App auf meinem Mobiltelefon, stellte ich fest, dass es keine sinnvolle Nutzungsmöglichkeit gibt, ohne der App Zugriff auf meine Kontakte zu geben, welche auf meinem Mobiltelefon gespeichert sind. Dies kommt für mich nicht in Frage, da ich die Telefonnummern meiner Kontakte, welche evtl. nicht bei WhatsApp sind, nicht in den Rachen dieser Datenkrake stopfen möchte. Das dies der Fall ist, bestätigen folgende Auszüge aus den WhatsApp Nutzungsbedingungen (Stand April 2019).

Adressbuch. Im Einklang mit geltenden Gesetzen stellst du uns regelmäßig die Telefonnummern von WhatsApp Nutzern und anderen Kontakten in deinem Mobiltelefon-Adressbuch zur Verfügung, darunter sowohl die Nummern von Nutzern unserer Dienste als auch die von deinen sonstigen Kontakten.

[…]

Deine Account-Informationen. Um einen WhatsApp Account zu erstellen, gibst du deine Mobiltelefonnummer und grundlegende Informationen (einschließlich eines Profilnamens) an. Im Einklang mit geltenden Gesetzen stellst du uns regelmäßig die Telefonnummern in deinem Mobiltelefon-Adressbuch zur Verfügung, darunter sowohl die Nummern von Nutzern unserer Dienste als auch die von deinen sonstigen Kontakten. Möglicherweise stellst du uns auch eine E-Mail-Adresse zur Verfügung. Du kannst auch andere Informationen zu deinem Account hinzufügen, wie beispielsweise ein Profilbild und eine Info.

https://www.whatsapp.com/legal/#privacy-policy-information-we-collect

Dass es auch anders geht, zeigt z.B. der Nachrichtendienst Threema. Dieser bietet die Möglichkeit Threema-IDs selektiv mit den Kontakten zu verknüpfen, die ebenfalls Threema nutzen. Hier wird nicht das komplette Adressbuch ausgelesen. Allerdings ist hier auch das Geschäftsmodell ein anderes. Die App ist kostenpflichtig und Datenschutz und Datensicherheit sind Produktmerkmale. Bei WhatsApp sind die eigenen Daten und die Daten anderer die Währung. Hier ist man selbst das Produkt.

Ich selbst habe mich entschieden, die Telefonnummern meiner Kontakte nicht ungefragt an WhatsApp weiterzugeben und habe die App wieder deinstalliert. Vielen Dank übrigens an all meine Kontakte, welche nicht so umsichtig waren und meine Telefonnummer frei Haus an WhatsApp geliefert haben. Das habt ihr großartig gemacht!

logo_clt2019

Zu Besuch bei den Chemnitzer Linux Tagen 2019

Auch in diesem Jahr haben die Chemnitzer Linux Tage wieder in das zentrale Hörsaal- und Seminar-Gebäude der Technischen Universität Chemnitz eingeladen. Das Motto lautete diesmal „Natürlich intelligent“ und so wundert es nicht, dass sich eine Vielzahl von Vorträgen den Themen Künstliche Intelligenz und Maschinelles Lernen widmeten. Darüber hinaus gab es interessante Vorträge zu den Themen IoT, Container, Sicherheit, Einsteiger, Datacenter, usw. Alles in allem wurde wie im letzten Jahr ein vielseitiges Programm geboten.

Anreise am Freitag

Wie im vergangenen Jahr bin ich auch dieses Mal wieder mit dem Auto angereist, denn 4,5 Std. Fahrt sind mir doch lieber, als 6-7 Std. Reisezeit mit der Bahn (laut Fahrplan). So kam ich Freitag Abend rechtzeitig an, um das Social Event im Turmbrauhaus zu besuchen. Es war ein schöner Abend mit freundlichen Menschen bei interessanten Gesprächen und natürlich 1..n Hopfenkaltschalen.

Ich habe mich gefreut, bekannte Gesichter von ubuntuusers.de wieder zu sehen und neue Gesichter hinter einigen Blogs kennen zu lernen, die ich regelmäßig lese.

Auftakt am Samstag

Punkt 7.00 Uhr Frühstück im Hotel, 8.00 Uhr Einlass bei den Chemnitzer Linux Tagen und ab 9.00 Uhr öffnete die Ausstellerfläche und das Vortragsprogramm startete. Ich selbst lernte an diesem Tag etwas über Präsentationen mit XeLaTeX (Beamer), NVMe, NVMe over Fabrics und erfuhr die ein und andere Neuigkeit im persönlichen Gespräch mit alten und neuen Bekannten. Mein persönliches Zitat des Tages stammt von D. Menzel und lautet: „NVMe over Fabric ist wie iSCSI auf Steroiden.“ :-D

Ausklang am Sonntag

Auch der Sonntag begann früh mit dem Frühstück um 7.00 Uhr. Um 9.00 Uhr war bereits alles für die Abreise gepackt und die Chemnitzer Linux Tage öffneten ihre Halle für den zweiten Veranstaltungstag. Dieser startete für mich mit einigen Standbesuchen, um Informationen über mögliche Schulungsangebote und Tipps für den Einsatz von Ansible einzusammeln, bevor es dann um 10.00 Uhr in den ersten Vortrag, den Samba Status Report, ging.

Laut dem zuvor genannten Vortrag tritt SMB2 an, um NFS zu töten. Naja, ich persönlich glaube, Totgesagte leben länger.

Der Storage Track endete mit einem Vortrag von Kai Wagner, welcher über die Neuigkeiten im neuen Ceph Release Nautilus berichtete. In hohem Tempo führte Kai durch eine Folienschlacht, um keine coole Neuerung zu vergessen. Bei den vielen lang erwarteten Neuerung kann ich gut verstehen, dass Kai keine davon unterschlagen wollte. Dennoch hat Kai hier einen tollen und unterhaltsamen Talk gehalten. Danke hierfür.

Der letzte Vortag für mich an diesem Tage war Open Source und Medizin, welcher einen interessanten Einblick in die Forschung mit Medizindaten bot.

Im Anschluss wurden die Vorträge noch in kleinen Gruppen diskutiert, bevor ich mich verabschiedete, um mich auf den Heimweg zu machen.

Es war mal wieder ein schönes Wochenende und tolle Chemnitzer Linux Tage 2019. Bis zum nächsten Jahr.

RHEL Spiegelserver für arme Admins

Es muss nicht immer gleich der Red Hat Sattelite Server sein, um einen lokalen Spiegelserver für die Installation von RPM-Paketen bereitzustellen.

Auf GitHub habe ich im Repository „Poor man’s RHEL mirror“ eine kleine Sammlung von Bash-Skripten zusammengestellt, mit denen sich ein Spiegelserver für RHEL-Repositories aufbauen lässt. Mit diesem können RHEL-Repositories, für welche man eine gültige Subskription besitzt, auf einen Host im lokalen Netzwerk synchronisiert und deren Pakete anderen RHEL-Servern im LAN zur Verfügung gestellt werden.

Neben der reinen Spiegelung können mit den auf GitHub bereitgestellten Skripten weitere lokale Stage-Repositories eingerichtet werden, mit denen sich die Verfügbarkeit von Paketen für einzelne Stages steuern lässt. Zusätzlich bietet das Projekt Skripte, um eigene YUM-Repositories zu erstellen, um zum Beispiel eigene Pakete darüber bereitstellen zu können. Des Weiteren wurde die Möglichkeit berücksichtigt, die Red Hat Errata Informationen in die lokalen RHEL-Repositories zu integrieren, um die --advisory Option für YUM auch auf Systemen nutzen zu können, die über keine eigene Verbindung zum Internet verfügen.

Warum ist dieses Projekt nützlich?

  • Es schont die eigene Internetverbindung, da Pakete nur einmal aus dem Internet heruntergeladen und anschließend im LAN zur Verfügung gestellt werden.
  • Es unterstützt bei der Erstellung eines YUM-Repositories zur Bereitstellung von RPM-Paketen.
  • Es unterstützt das Staging-Konzept, in dem es die Möglichkeit bietet, stage-spezifische Repositories bereitzustellen.
  • Es implementiert die Red Hat Errata Informationen in die gespiegelten RHEL-Repos, so dass diese von angebundenen Servern genutzt werden können, die über keine eigene Internetverbindung verfügen.
  • Es entstehen keine Zusatzkosten, da alle notwendigen Werkzeuge in den Repos einer RHEL-Standard-Subskription enthalten sind.

Wer kann dieses Projekt nutzen?

Das Projekt selbst steht unter der MIT-Lizenz und kann unter deren Bedingungen frei genutzt, modifiziert und weiter verteilt werden.

Für den Betrieb des Spiegelservers ist der Besitz einer gültigen RHEL-Subskription Voraussetzung. Denn es können nur jene Repos gespiegelt werden, für die eine gültige Subskription vorhanden ist. Auch alle an den Spiegelserver angeschlossenen Systeme müssen über eine entsprechende und gültige Subskription verfügen.

Bei Fragen zu Subskriptionen helfen die folgenden Seiten weiter:

Um mit diesem Projekt einen Spiegelserver aufsetzen und betreiben zu können, sind gewisse Kenntnisse erforderlich. Zu diesen zählen die Installation eine RHEL-Systems inkl. Registrierung, das Hinzufügen von Subskriptionen und die Installation von Paketen. Informationen hierzu bietet die Product Documentation for Red Hat Enterprise Linux 7.

Wie ist das GitHub-Repository zu diesem Projekt aufgebaut?

Das GitHub-Repository beinhaltet ein README, welches einen Überblick über das Projekt und eine Kurzbeschreibung der einzelnen Skripte in englischer Sprache beinhaltet. Im Master-Branch befindet sich die letzte stabile Version des Projekts. Weiterentwicklungen und Fehlerkorrekturen werden im Dev-Branch gepflegt und nach einer Testphase in den Master-Branch übernommen.

Sorgen, Nöte und Anträge sowie gefundene Fehler dürfen gern über die Issue-Funktion oder in den Kommentaren zu diesem Beitrag gemeldet werden.

An dieser Stelle folgt eine Beschreibung in deutscher Sprache, wie ein Spiegelserver mit diesem Projekt aufgebaut werden kann. Dabei handelt es sich um keine Schritt-für-Schritt-Anleitung und es werden grundlegende Kenntnisse über den Betrieb eines RHEL-Servers und die Installation sowie Konfiguration von Paketen vorausgesetzt.

Einrichtung eines Spiegelservers für arme Sysadmins

Um das Projekt nutzen zu können, benötigt man eine RHEL-Installation mit gültiger Subskription, auf welcher mindestens die folgenden Pakete installiert sein müssen:

  • reposync und createrepo, um RHEL-Repos synchronisieren und eigene Repos erstellen zu können
  • git zum Klonen des hier beschriebenen Projekts
  • Die Gruppe Basic Web Server oder einen anderen Webserver eurer Wahl, um die gespiegelten Repos über HTTP im LAN bereitstellen zu können

Zu Beginn sind die Dateien aus dem oben genannten GitHub-Repository in einem Verzeichnis auf dem lokalen Host bereitzustellen. Anschließend ist das Projekt zu konfigurieren. Die dazu notwendigen Schritte werden in den folgenden Abschnitten erläutert.

CONFIG.SAMPLE

Hierbei handelt es sich um die Hauptkonfigurationsdatei. Diese ist in CONFIG umzubenennen bzw. zu kopieren und zu editieren. In dieser Datei werden die Variablen gesetzt, die von den verschiedenen Shell-Skripten verwendet werden. Darunter sind z.B. Angaben, welche Repos gespiegelt werden und wo die Dateien gespeichert werden sollen.

Die Datei ist mit Kommentaren versehen und sollte weitgehend selbsterklärend sein (was für alle weiteren Dateien gilt).

create_yum_repo.sh

Dieses Skript kann genutzt werden, um ein eigenes YUM-Repository zu erstellen, über welches RPM-Pakete bereitgestellt werden können. Der Name des zu erstellenden Repos kann dem Skript als Parameter übergeben werden.

do_reposync.sh

Dies ist das Herzstück des Projekts. Es kümmert sich um die Spiegelung der RHEL-Repos. Die notwendigen Parameter werden in der Datei CONFIG konfiguriert.

Das Skript lädt nur die aktuellen Pakete aus den Repos herunter, löscht aus den Upstream-Repos entfernte Pakete jedoch nicht automatisch auf dem lokalen Host. Dies ist meinen persönlichen Anforderungen geschuldet. Es ist nicht ausgeschlossen, dass ich diese Parameter in Zukunft ebenfalls konfigurierbar gestalte.

Einen Überblick über den Speicherbedarf ausgewählter RHEL-Repos findet ihr hier: How much disk space do I need for reposync?

Um die heruntergeladenen Pakete im LAN zur Verfügung zu stellen, muss das BASEDIR (siehe CONFIG) über einen Webserver zugreifbar gemacht werden.

refresh_repo.sh

Werden einem Repo neue RPM-Dateien hinzugefügt, muss die Metadaten-Datenbank aktualisiert werden, damit Klienten die neuen Pakete auch finden können. Um diese Aktualisierung kümmert sich eben dieses Skript.

rsync_repo.sh

Mit diesem Skript lassen sich Repos auf dem lokalen System synchronisieren. Dabei werden die Dateien jedoch nicht 1:1 kopiert, sondern Hardlinks erstellt. Dies spart bei der Verwendung mehrerer Repos für unterschiedliche Stages Speicherplatz.

Neben dem kompletten Sync eines Repos ist es auch möglich, dem Skript eine Datei zu übergeben, welche die Namen der Pakete enthält, welche in ein weiteres Repo „transportiert“ werden sollen.

Wrapper-Scripts

In meiner Umgebung arbeiten wir mit bis zu vier verschiedenen Stages (E, I, Q und P). Für jede dieser Stages wird ein eigenes Stage-Repo des Upstream rhel-7-server-rpms erzeugt. Um diese Stage-Repos zu aktualisieren, werden die folgenden Skripte verwendet:

  • update_rhel-e-stage.sh
  • update_rhel-i-stage.sh
  • update_rhel-q-stage.sh
  • update_rhel-p-stage.sh

Jede Stage wird mit den Paketen aus der vorhergehenden aktualisiert. So ruft z.B. update_rhel-e-stage.sh das Skript rsync_repo.sh, um die Pakete aus dem lokalen Spiegel des Upstreams rhel-7-server-rpms zu importieren. update_rhel-i-stage.sh verwendet dementsprechend die rhel-e-stage als Quelle usw.

Diese Konfiguration ist für meinen Anwendungsfall optimiert. Die Verwendung der Skripte ist optional. Der Spiegelserver funktioniert auch ohne diese Wrapper-Scripts.

update_mirror_packages_and_erratas.sh

Dieses Skript aktualisiert die Pakete in den Repos des lokalen Spiegelservers inkl. der Red Hat Errata Informationen. Letztere ermöglichen es, die Erratas (RHSA, RHBA und RHEA) auch Systemen verfügbar zu machen, welche über keine Verbindung zum Internet verfügen.

Das Skript ist in der Standardeinstellung auf meinen Anwendungsfall optimiert und aktualisiert am Ende alle vorhandenen RHEL-Stage-Repos. Wer diese Funktion nicht benötigt, kann sie durch Auskommentieren der Zeilen 45 und 46 im Skript deaktivieren.

Anschließend kann ein Cronjob erstellt werden, welcher das Skript ausführt, um den Spiegelserver regelmäßig gemäß der eigenen Anforderungen zu aktualisieren.

Die gespiegelten Repos verfügbar machen

Hat man die Repos seiner Wahl gespiegelt, ergibt sich je nach Konfiguration eine Verzeichnisstruktur ähnlich der folgenden.

$ tree -L 2
.
├──  rhel-7-test-mirror
│   ├── rhel-7-server-extras-rpms
│   ├── rhel-7-server-optional-rpms
│   ├── rhel-7-server-rpms
│   ├── rhel-7-server-supplementary-rpms
│   ├── rhel-e-stage
│   ├── rhel-e-stage.repo
│   ├── rhel-i-stage
│   ├── rhel-p-stage
│   ├── rhel-q-stage
│   └── rhel-server-rhscl-7-rpms

Das Verzeichnis rhel-7-test-mirror aus obigen Beispiel enthält die gespiegelten Repos als Unterverzeichnisse. Dieses Verzeichnis sollte über einen Webserver zugreifbar gemacht werden, um die Pakete den Clients im lokalen Netzwerk verfügbar zu machen.

Im obigen Listing ist eine Datei namens rhel-e-stage.repo zu sehen. Dabei handelt es sich um eine Repo-Datei, welche heruntergeladen und im Verzeichnis /etc/yum.repos.d/ platziert werden kann, um wie in diesem Beispiel das Repo rhel-e-stage zu aktivieren.

Aufbau einer Repo-Datei

Das folgende Listing zeigt die kommentierte Repo-Datei aus dem vorstehenden Abschnitt. Sie kann als Muster für weitere eigene Repo-Dateien dienen.

[rhel-e-stage] # Repo ID
baseurl = http://example.com/rhel-7-test-mirror/rhel-e-stage/
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
name = Repo for rhel-7-server-rpms (Test)

Fragen, Sorgen, Nöte und Anträge

Das Projekt und die enthaltene Software werden so wie sie sind unter der angegebenen Lizenz zur Verfügung gestellt.

Fragen, Sorgen, Nöte und Anträge können sowohl hier in den Kommentaren zum Artikel, als auch auf Github hinterlassen werden.

Ich hoffe, dass dieses Projekt euch (weiterhin) nützlich ist und freue mich über Rückmeldungen, wie es euch gefällt.

Kommentar zu Docker – Genauso schlimm wie befürchtet

Marius hat gestern in Braunschweig darüber gebloggt, dass Docker – Genauso schlimm wie befürchtet ist. Bis Marius zu seiner Analyse kommt, stimme ich ihm voll und ganz zu. Auch ich gehöre zu den ewig gestrigen, den Nörglern, Pessimisten und Schwarzsehern, welche es von Anfang an gesagt haben. Und unsere düstere Vorsehung ist eingetreten. Welch Überraschung.

Wo ich Marius nicht mehr zustimme, sind die Ergebnisse seiner Analyse, welche er in der zweiten Hälfte seines Artikels vornimmt. So schreibt er dort:

Der sicherere Ansatz ist und bleibt, daß jemand das OS vorgibt und sich die Apps an die Umgebung anpassen müssen. Damit sind die gezwungen Updates zu machen und das dient dann der allgemeinen Sicherheit.

URL: https://marius.bloggt-in-braunschweig.de/2019/02/27/docker-genauso-schlimm-wie-befuerchtet/

Diese Aussage ist in meinen Augen falsch. Denn niemand wird gezwungen, Updates für die in einem Betriebssystem installierten Anwendungen zu veröffentlichen. Folgende Beispiele sollen dies verdeutlichen.

Man nehme ein herkömmliches Betriebssystem, sagen wir Ubuntu oder Red Hat Enterprise Linux. Unter beiden Betriebssystemen kann ich mir nun eine Anwendung als DEB- bzw. RPM-Paket oder auch ganz klassisch als TAR-Archiv aus dem Internet herunterladen und auf meinem Betriebssystem installieren. Habe ich nun eine Garantie, dass ich Sicherheitsupdates für diese Software erhalte? Die Antwort lautet: Nein.

Verwendet man eine nach obigem Muster installierte Software und nutzt diese gemeinsame Bibliotheken, mag man das Glück haben, dass die Software nach der Aktualisierung eben dieser Bibliotheken nicht mehr funktioniert. Ob man dies als Sicherheitsgewinn wertet oder es doch nur ein Ärgernis ist, sei einmal dahingestellt.

Im Ubuntuversum soll die Paketquelle universe als abschreckendes Beispiel dienen. In dieser befindet sich so viel alte und nicht mehr gepflegte Software, dass man auch hier die Chance hat, Anwendungen mit ein oder mehreren Sicherheitslücken zu finden.

Zugegeben, mit einer zentralen Paketverwaltung ist es einfacher, sein System aktuell zu halten, um es vor Sicherheitslücken zu schützen. Eine Garantie ist es nicht und kein Sysadmin sollte sich darauf ausruhen.

Abzulehnen ist also alles, was eine App installiert, die mit eigener Umgebung kommt, sowas wie FlatPak, Docker und Snap.

URL: https://marius.bloggt-in-braunschweig.de/2019/02/27/docker-genauso-schlimm-wie-befuerchtet

Marius schließt seinen Beitrag mit obigem Satz. Dieser ist mir zu pauschal. Denn FlatPak, Docker und Snap sind nicht per Definition unsicher. Wer sich jedoch ohne lange nachzudenken, den erstbesten Container vom Docker Hub herunterlädt ist selber schuld.

Es gibt jedoch auch die Möglichkeit eine eigene Registry für Container aufzusetzen und zu betreiben, um nur Container zu verwenden, die man selbst geprüft bzw. gebaut hat. Oder man nutzt die Registries der Enterprise Distributionen wie z.B. Red Hat OpenShift, welche sich gegen Entgelt um die Bereitstellung geprüfter Container-Images kümmern. Auch dies ist keine Garantie für (absolute) Sicherheit und Aktualität. Doch hat hier wenigstens jemand den Sicherheitsaspekt im Auge und arbeitet an diesem Thema. Dies ist im Vergleich zur völlig freien, unkontrollierten und schwer prüfbaren Müllhalde ein großer Vorteil.

Ähnliches gilt für FlatPak und Snap. Letztlich stehen und fallen die kommerziellen Angebote damit, wie gut ihr Anbieter seinen Job macht. Auch hier wurden schon Pakete gefunden, die neben ihrer eigentlichen Aufgabe noch einen Zweitjob (Crypto currency mining) hatten.

Für pauschale bzw. absolute Aussagen ist es in meinen Augen noch zu früh. Wir werden noch eine Weile abwarten müssen, wie sich die einzelnen Projekte weiterentwickeln. Als Sysadmin sollte man weiterhin stets auf der Hut sein und seinen gesunden Menschenverstand benutzen.

LaCrosse-Sensoren in FHEM einbinden

Nachdem ich erfreulich viele Rückmeldungen auf meinen Artikel Empfehlungen für Raumklimaüberwachung erwünscht erhielt, habe ich mich für die Verwendung von FHEM [1], JeeLink [2] und LaCrosse-Sensoren [3] entschieden. Die Einrichtung folgt dem Artikel  [4] von MeinTechBlog.DE.

An dieser Stelle werden die minimal notwendigen Befehle für meine Umgebung dokumentiert. Links zu weiterführenden Informationen finden sich am Ende des Beitrags.

  1. JeeLink in den Paringmodus schalten: set <JeeLinkName> LaCrossePairForSec <seconds>
  2. Batterien in LaCrosse-Sensor einlegen und Pairing abwarten
  3. Sensor und Log umbenennen: rename <AlterName> <NeuerName>
  4. Raum zuweisen: attr <SensorName> room <RaumName>
  5. Loginterval anpassen:
    1. attr <SensorName> event-min-interval temperature:600,humidity:600,battery:3600
    2. attr <SensorName> event-on-change-reading temperature:0.5,humidity:2,battery

Quellen und weiterführende Links

  1. FHEM-Webseite: http://www.fhem.de/fhem_DE.html
  2. JeeLink im FHEM-Wiki: https://wiki.fhem.de/wiki/JeeLink
  3. Fhem: Günstige Temperatur- und Luftfeuchte-Sensoren von LaCrosse: https://blog.moneybag.de/fhem-guenstige-temperatur-und-luftfeuchte-sensoren-von-lacrosse/
  4. FHEM mit JeeLink: Luftfeuchte und Temperatur zum Low-Cost-Tarif messen: https://www.meintechblog.de/2015/01/fhem-mit-jeelink-luftfeuchte-und-temperatur-zum-low-cost-tarif-messen/
  5. FHEM Devicenamen: https://www.fischer-net.de/hausautomation/fhem/22-fhem-devicenamen.html