Zum Hauptinhalt springen

Grundbegriffe

Semaphore hat eine zentrale Idee: Ein Task Template bündelt alles, was ein Lauf benötigt, und seine Ausführung erzeugt einen Task. Zu lernen, wo die einzelnen Bestandteile dieses „alles“ konfiguriert werden, ist der größte Teil davon, das Produkt zu lernen.

Das Objektmodell

Projekte enthalten alles

Ein Projekt ist die Einheit der Abgrenzung. Repositories, Schlüssel, Inventories, Variablengruppen, Templates und der Task-Verlauf gehören zu genau einem Projekt, ebenso die Teammitgliedschaft. Zwei Projekte teilen nichts außer dem Server und seinen Benutzern — genau das macht ein Projekt zur richtigen Grenze zwischen Teams, Umgebungen oder Kunden.

Ressourcen beschreiben die Eingaben

Es gibt vier Arten von Ressourcen, damit derselbe Wert von vielen Templates wiederverwendet und an einer Stelle geändert werden kann:

  • Ein Repository ist der Ort, an dem das Playbook oder Skript liegt.
  • Der Key Store enthält die SSH-Schlüssel, Logins und Tokens, mit denen das Repository und die Zielhosts erreicht werden.
  • Ein Inventory listet die Hosts auf, auf die ein Lauf zielt, und wie eine Verbindung zu ihnen aufgebaut wird.
  • Eine Variablengruppe bringt Variablen und Secrets in die Umgebung des Laufs.

Templates definieren den Lauf

Ein Task Template wählt eine Anwendung (Ansible, Terraform, ein Skript), ein Repository, das Playbook bzw. den Einstiegspunkt darin sowie Inventory, Variablengruppe und Schlüssel aus. Es legt außerdem fest, was die Person, die den Task startet, ändern darf: Survey-Variablen machen aus einem Template ein Formular, und Prompts erlauben Benutzern, Branch, Inventory oder zusätzliche Argumente zu überschreiben.

Tasks sind die Läufe

Das Starten eines Template erzeugt einen Task. Der Task hat sein eigenes Log, seinen Status, seine Dauer und den Namen der Person, die ihn gestartet hat, und dieser Eintrag bleibt nach dem Lauf erhalten. Tasks starten aus der UI, über einen Zeitplan, über einen Integrations-Webhook, über die API oder über ein anderes Template in einem Workflow.

Glossar

BegriffBedeutung
Access KeyEin Eintrag im Key Store: ein SSH-Schlüssel, ein Login mit Passwort oder ein Token. Sein geheimer Teil wird verschlüsselt in der Datenbank abgelegt.
AlertEine Benachrichtigung, die versendet wird, wenn ein Task einen bestimmten Zustand erreicht. Kanäle werden auf dem Server konfiguriert und dann pro Projekt und pro Template aktiviert.
AppDas Werkzeug, das ein Template ausführt: Ansible, Terraform, OpenTofu, Terragrunt, Bash, PowerShell oder Python.
Build-TemplateEin Template-Typ, der ein versioniertes Artefakt erzeugt; jeder Lauf erhöht die Version.
Deploy-TemplateEin Template-Typ, der mit einem Build-Template verknüpft ist; beim Starten wird gefragt, welche Build-Version ausgeliefert werden soll.
ExecutorWie ein Runner einen Job startet: als lokaler Prozess, in einem Docker-Container oder in einem Kubernetes-Pod.
IntegrationEin eingehender Webhook, der ein Template startet, sobald ein externes System ihn aufruft.
InventoryDie Hosts, auf die ein Task zielt, als statischer Text, als Datei im Repository oder als dynamisches Inventory-Skript.
Key StoreDie projektbezogene Sammlung von Access Keys.
ProjektDer oberste Container: Ressourcen, Templates, Task-Verlauf und Teammitgliedschaft.
RolleWas ein Mitglied innerhalb eines Projekts tun darf. Die integrierten Rollen sind Owner, Manager, Task Runner und Guest.
RunnerEin separater Prozess, der Tasks für den Server ausführt, statt dass der Server sie selbst ausführt.
ZeitplanEin Cron-Ausdruck, der ein Template ohne Zutun einer Person startet.
Secret-SpeicherEin externes System wie HashiCorp Vault, das geheime Werte anstelle der Semaphore-Datenbank vorhält.
Survey-VariableEin Feld, das das Template definiert und das der Benutzer beim Starten eines Task ausfüllt; es wird zu einer Variablen des Laufs.
TaskEine Ausführung eines Template, mit Log, Status und Urheber.
Task TemplateDie wiederverwendbare Definition dessen, was womit ausgeführt wird. Oft einfach „Template“.
VariablengruppeEin benannter Satz von Variablen und Secrets, der an den Lauf übergeben wird. In älteren Versionen und in der API Environment genannt.
ViewEin Tab, der in der Template-Liste eine Teilmenge der Templates eines Projekts gruppiert.
WorkflowEin Graph von Templates, die nacheinander ausgeführt werden, mit Verzweigungen, Freigaben und Verzögerungen. Eine Pro-Funktion.

Wie es weitergeht