VM für Template vorbereiten

Viele Hypervisor (VMware, Proxmox, OpenStack,…) unterstützen sogenannten „VM Templates“. Damit lässt sich eine VM mit einem Betriebssystem vorinstallieren und mittels Cloud-init kann dann bei der Erzeugung der VM aus einem Template noch die spezifische Konfiguration, wie Hostname, Netzwerk/IP und Passwort konfiguriert werden. Dies geschieht in den meisten Fällen mit Cloud-init.
Zuvor sollte die VM jedoch entsprechend „vorbereitet“ werden, so dass Hostname, IP Konfiguration, Logs, Passwörter usw. aus dem System entfernt werden, bevor es zum „Template“ umgewandelt wird.
Dieser Prozess wird in der Fachsprache „generalisiert“ (bzw. „generalize“) genannt.

Continue reading VM für Template vorbereiten

(r)syslog nach logrotate neu laden

Wenn logrotate alte Logdateien rotiert, muss rsyslog seine Dateihandles neu öffnen, sonst schreibt es weiter in die alten (nun rotierten) Files, was zum Problem mit offenen Dateihandles führt.
Doch mit welchem postrotate Aufruf macht man das am besten? Im laufe der Zeit hat es einige Varianten gegeben.

Continue reading (r)syslog nach logrotate neu laden

Sonoff ZBDongle-E auf Raspberry Pi Flaschen

Da mein bisheriges Setup mit RaspBee2 von Phoscon auf einem Raspberry Pi eher mässig funktionierte (es war „Glückssache“, ob ein neues Gerät gefunden wurde, oder nicht), habe ich mir nach dem Lesen des Artikels Zigbee2MQTT: Dein Smart Home unabhängiger machen den Sonoff Zigbee 3.0 USB Dongle Plus (ZBDongle-E) USB Adapter und ein passendes USB Verlängerungskabel gekauft.

Die Standard Firmware auf diesem Dongle war jedoch zu alt um mit Zigbee2MQTT zu funktionieren.

Das Flaschen mit passender Firmware war allerdings etwas tricky, auch weil viele Informationen und Links veraltet waren.
Hier der Weg wie es geklappt hat.

Continue reading Sonoff ZBDongle-E auf Raspberry Pi Flaschen

MariaDB Cluster geordnet stoppen- und starten

Manchmal kann es notwendig sein einen ganzen Galera Cluster herunterzufahren (etwa um offline Snapshots zu machen) und dann wieder hochzufahren.

Wenn dies geordnet passiert, gibt es danach auch keine „Split-Brain“ Situationen.

Continue reading MariaDB Cluster geordnet stoppen- und starten

Linux Partitionstabelle löschen

Vor einer Neuinstallation von Linux macht es Sinn die Festplatte zu formatieren, weil z.B. Ubuntu es einem nicht erlaubt denselben Volume Group Namen zu verwenden, welcher das vorherige System schon hatte. Dabei muss man noch nicht einmal zeitaufwändig die ganze Festplatte löschen; es reicht auch schon, wenn man nur die Partitionstabelle löscht. Und das geht sogar bei laufendem System.

Continue reading Linux Partitionstabelle löschen

Sicherstellen dass ein Script nur einmal läuft

Bei Shell Scripts will man oft verhindern, dass das Script zweifach aufgerufen werden kann und dann parallel läuft, etwa bei einem Backup Prozess.

Die gängigen Methoden, wie das prüfen ob der Prozess läuft oder anlegen einer PID Datei sind nicht die besten. Es gibt eine weitaus elegantere- und technisch bessere Methode.

Continue reading Sicherstellen dass ein Script nur einmal läuft

Serielle Konsole (RS232) öffnen

Es gibt teilweise noch Geräte, wie die PC Engines APU2, die keine Grafikschnittstelle haben und nur via serielle Konsole drauf zugegriffen werden kann, beispielsweise mittels einem USB zu RS232 Adpaters.

Unter Windows verwendet man dafür das Programm PuTTY, unter Linux und MacOS geht das mit screen.

Continue reading Serielle Konsole (RS232) öffnen

ansible: object has no attribute ‚cert_file‘

Wenn man in ansible eine Task wie etwa apt_key oder uri ausführt failed das mit der Meldung:

An unknown error occurred: HTTPSConnection.__init__() got an unexpected keyword argument 'cert_file'"

Schuld daran ist eine inkompatible neuere Python Version zu älteren Ansible Versionen.

Da in älteren Ansible Versionen beim URL Handling das das Python Attribut cert_file hardcoded ist, welches ab Python 3.12 entfernt wurde, kommt hier der Fehler. Folglich lassen sich diese Ansible Versionen mit Python >= 3.12 nicht mehr nutzen.

Continue reading ansible: object has no attribute ‚cert_file‘