Mittwoch, September 16, 2026

Netbox - Semaphore Workflows

Ich habe mir nun die Workflows angesehen. Sie sind aktuell (noch) etwas rudimentär, da wird sich aber vermutlich zukünftig noch was tun. Aktuell sind Workflows jedenfalls gut geeignet, um die Ausführung verschiedener Playbooks aneinanderzureihen.

Bildschirmfoto_20260916_120536-1.png

Der große Vorteil so einer Kette ist, dass man dann das Ausführen eines nachfolgenden Playbooks an die Bedingung knüpfen kann, dass das vorherige Playbook ohne Fehler durchgelaufen ist. Bisher habe ich alle Playbooks zeitversetzt per cron aufgerufen, da ist die neue Methode per Workflow doch wesentlich besser.

Bildschirmfoto_20260916_121227.png

Die Bedingungen wann/ob das nächste verknüpfte Playbook ausgeführt wird, musste ich erst suchen. Diese Einstellungsmöglichkeit versteckt sich hinter der Verbindungslinie zwischen zwei Tasks.

Scheinbar gibt es derzeit noch keine Möglichkeit so einen Workflox per Schedule in Semaphore anzustoßen. Bei “Schedule” kann man in Semaphore nur Tasks aber keine Workflows als cronjob eintragen. Das kann man jedoch mit einem kleinen Trick umgehen. Dazu stoße ich den Workflow per http API Call mit einem neu erstellten Bashskript an. Das Bash Skript kann ich als “Task” bei Schedules in Semaphore eintragen. Ich erstelle in meinem Playbook Verzeichnis im LXC mit Semaphore eine neue .sh Datei z.B. trigger-sync-standorta.sh. Anschliessend noch per chmod 755 ausführbar machen. Folgender Inhalt –>

#!/bin/bash
set -euo pipefail
curl -sf -X POST 
  -H "Authorization: Bearer ${SEMAPHORE_API_TOKEN}" 
  -H "Content-Type: application/json" 
  "http://localhost:3000/api/project/2/workflows/1/run"

speichern und per git commiten, damit das Skript auch in Semaphore zur Verfügung steht. Das ssh Plugin für VSCodium macht solche Aktionen superkomfortabel. Das lästige commiten auf der CLI entfällt hiermit.

Bildschirmfoto_20260916_131159.png

Es scheint als würden die Workflows einfach durchnummeriert. Ein zweiter Workflow hätte die Adresse

http://localhost:3000/api/project/2/workflows/2/run

(man beachte die “2” nach ../workflows) Die Authorisierung läuft über ein Token das ich zuerst in der Semaphore GUI neu anlegen musste.

Bildschirmfoto_20260916_123335.png

Das neu erstellte Token trage ich ebenfalls in die altbekannte Variablendatei ein.

Bildschirmfoto_20260916_123545.png

“passwords” o.ä. wäre ein besserer Name für für diese Variablendatei gewesen, das ändere ich evtl im Verlauf noch. Als nächstes unter Templates ein neues Bashskript einrichten. Hier die o.g. Variablendatei mit angeben sonst klappt die Authentifizierung nicht.

Bildschirmfoto_20260916_123814.png

Das neu angelegte Template kann man nun bei Schedules als cronjob eintragen. Das läuft seit 2 Tagen ausgezeichnet. Theoretisch kann man mit solchen Bashskripten am Anfang und Ende solcher Ketten auch Aufzweigungen, Schleifen usw. basteln. Ich bin aber ziemlich sicher, dass die Workflows noch erweitert werden, daher werde ich von solchen Bastellösungen eher Abstand nehmen.

RSS | ATOM


Kommentar hinzufügen

Die Felder Name und Kommentar sind Pflichtfelder.


BBCode Hilfe