nginx reverse-proxy per source IP

Es gibt Situationen da möchte man in einem nginx reverse-proxy die Requests je nach Client IP zu einem anderen Server umleiten. Nützlich ist das beispielsweise bei einer Server Migration, wo man nur eine handvoll interner IPs zuerst auf den neuen Server proxy-en kann und wenn alles läuft dann alle.

Die Option mit „if Statements“ sollte man dabei möglichst nicht verwenden. Und es gibt auch eine viel elegantere Option.

Continue reading nginx reverse-proxy per source IP

JSON output in ansible verwenden

Hat man in einem Task JSON als Ausgabe (etwa bei einer REST-API Abfrage) könnte man auf die Werte gleich in ansible Zugreifen, welches ebenfalls JSON für die Variablen verwendet.
Zuvor muss die Ausgabe aber in JSON umgewandelt werden. Ansible stellt dazu den Filter to_json zur Verfügung.

Continue reading JSON output in ansible verwenden

Ansible: Globale Variablen

Normalerweise kann man in ansible nur auf die Variablen des gerade ausführenden hosts zugreifen. Ein Konzept von „Globalen Variablen“, welche im ganzen Playbook gültig sind gibt es nicht.
Man kann sich jedoch behelfen, in dem man einfach die Variablen eines bestimmten Hosts zugreift.

Continue reading Ansible: Globale Variablen

Umgebungsvariablen eines Benutzers in systemd unit übernehmen

Hat man ein systemd unit/service file, welches Bestimmte Umgebungs Variablen des Benutzers übernehmen soll, kann man das entweder mit Environment="[…]" direktiven machen, oder mit EnvironmentFile=/pfad/zur/datei auf eine Datei referenzieren.

Noch einfacher ist es hingegen automatisch die Umgebungsvariablen des Benutzers (die etwa von .bash_profile oder .bashrc kommen) einzulesen.

Continue reading Umgebungsvariablen eines Benutzers in systemd unit übernehmen

ansible: Rolle nur bei explizit gesetzten Tags ausführen

Manchmal hat man in seinem ansible Plabooks Rollen, die man beispielsweise nicht bei jedem Durchgang ausführen möchte, sondern nur wenn ein Tag explizit gesetzt ist.

Ein Beispiel dafür wäre eine „update“ Rolle, welche das System aktualisiert und ggf. danach den Server gleich neu startet. Das will man natürlich nicht bei jedem durchlauf machen.

Mit den zwei Spezial-Tags never und always bietet ansible hierfür die richtigen Werkzeuge.

Continue reading ansible: Rolle nur bei explizit gesetzten Tags ausführen

mysql: Wildcard Zugriffsrechte für Datenbanken

Möchte man einem mysql/mariadb Benutzer automatisch Zugriff auf alle Datenbanken geben, die auf ein bestimmten Muster zutreffen (z.B. alle Datenbanken, welche mit jdoe_ beginnen) geht das ganz einfach mit dem Konstrukt privileges on wildcard name (username\_%):

Continue reading mysql: Wildcard Zugriffsrechte für Datenbanken

channel: no ‚mirrors.sought.rules.yerp.org‘ record found, channel failed

Seit 11. März 2021 bekommen Linux Administratoren, die spamassassin unter CentOS 7 am laufen haben die folgende Meldung vom sa-update cronjob:

channel: no 'mirrors.sought.rules.yerp.org' record found, channel failed
11-Mar-2021 05:53:59: SpamAssassin: Unknown error code 3 from sa-update
Continue reading channel: no ‚mirrors.sought.rules.yerp.org‘ record found, channel failed

Mit python an IP/Port binden

Fürs testen von Netzwerkverbindungen ist es manchmal nützlich, wenn man eine schnelle Möglichkeit hat sich an edin bestimmtes interface und port zu binden. – Letzteres wäre zwar auch mit netcat (nc -l 5000) möglich, doch damit kann man sich nicht an eine bestimmte IP, bwz. ein Interface binden.

Continue reading Mit python an IP/Port binden

systemd service files mit override anpassen

Muss man ein systemd service file anpassen, um beispielsweise dem Service bestimmte Umgebungsvariablen mitzugeben ist es keine gute Idee, diese direkt ins service file zu schreiben, da diese Änderung bei einer Systemaktualisierung überschrieben werden kann.

Und es gibt dafür eine viel elegantere Methode.

Continue reading systemd service files mit override anpassen