Terraform-Oberfläche: Semaphore UI vs. Gaia

Denis GukovGründer und CTO bei Semaphore UI
15 Min. Lesezeit

Gaia und Semaphore UI bieten beide eine Weboberfläche für Infrastrukturautomatisierung. Gaia stellt einen Self-Service-Katalog für Terraform-Module und Stacks bereit. Semaphore UI führt Terraform/OpenTofu neben Ansible, Terragrunt, Bash, PowerShell und Python aus und deckt Provisionierung sowie anschließende Vorgänge ab. Dieser Vergleich behandelt Gaia 2.4.0 und Semaphore UI 2.20.0.

Diesen Artikel mit KI besprechen

Übersicht

Ein Terraform-Modul kann eine Umgebung erstellen. Diesen Prozess zu teilen erfordert jedoch mehr als die Ausführung von apply. Nutzer müssen die richtigen Eingaben liefern, passende Zugangsdaten verwenden und den resultierenden State sowie Ausgaben finden. Anschließend brauchen Server und Dienste Konfiguration, Sicherungen, Updates und eine Betriebsprozedur, die andere wiederholen können.

Gaia bündelt die Provisionierung als Terraform-Servicekatalog. Autoren veröffentlichen Module, Nutzer erstellen separat konfigurierte Stacks, und Jobs planen, erstellen oder zerstören deren Ressourcen. Jeder Stack hält eigene Variablen, Zugangsdaten, State und Ausführungshistorie für eine Infrastrukturinstanz vor.

Semaphore UI bringt Provisionierung in einen umfassenderen Automatisierungsdienst. Terraform/OpenTofu-Vorlagen können Workspaces, wiederverwendbare Variablen und Startformulare verwenden. Ansible-Vorlagen ergänzen Inventare und Hostkonfiguration. Bash-, PowerShell-, Python- und Terragrunt-Vorgänge nutzen dasselbe Projekt- und Ausführungsmodell. Workflows verbinden die Schritte, und Zeitpläne halten die spätere Wartung in derselben Oberfläche.

Semaphore-UI-Aufgabenvorlagen für mehrere Automatisierungswerkzeuge in einem Projekt.
Semaphore UI. Vorbereitete Ansible-, Infrastructure-as-Code- und Kommandozeilenvorgänge teilen sich die Aufgabenliste eines Projekts.
Gaia-Stack-Ansicht mit Eingabevariablen, Terraform-Jobs und Ausgaben.
Gaia. Eine Modulinstanz wird als Stack mit eigenen Eingaben, Jobs und State verwaltet. Beispiel aus der offiziellen Dokumentation. Quelle

Kurzvergleich

Beide Produkte lassen Nutzer Infrastrukturcode ausführen, ohne dessen Einrichtung auf jedem Laptop zu wiederholen. Ihr Hauptunterschied liegt darin, was der gemeinsame Dienst verwaltet: von einem Terraform-Modulkatalog bis hin zu Provisionierung, Ansible-Konfiguration und wiederkehrenden Vorgängen.

Gaia und Semaphore UI: zentrale Eigenschaften
Kriterien Semaphore UI Gaia
Automatisierungstools Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell, Python Terraform
Wiederverwendbare Einheit Aufgabenvorlagen und Workflows Terraform-Module und unabhängig konfigurierte Stacks
Installation Binärdatei, Pakete, Docker, Kubernetes Java-Anwendung, Docker Compose, Kubernetes
Laufzeitabhängigkeiten Datenbank, Git und ausgewählte Werkzeuge Java-Anwendung, MongoDB und ein Docker-/Kubernetes-Runner
Ausführung Auf dem Server oder auf Runnern Separater Runner mit Docker oder Kubernetes
Zeitplanung Cron-Ausdrücke und einmalige Ausführungen Externer Scheduler über plan/apply-Job-APIs
Workflows Verknüpfte Ansible-, IaC- und Skriptvorlagen Terraform-plan/apply-Phasen, externe Orchestrierung
State-Speicher Vorhandene Backends oder integriertes HTTP-Backend in Pro Integriertes Stack-State-Backend
Eingaben Eingabeformulare, wiederverwendbare Variablengruppen und Secrets Modulvariablen, Standardwerte und Validierung
Inventar Wiederverwendbare Ansible-Definitionen und Discovery-Plugins Terraform-Ressourcen und Ausgaben pro Stack
Zugriffskontrolle Projektrollen, benutzerdefinierte Rollen in Enterprise Administrator- und Nutzerrollen, organisationsbasierter Modulzugriff
Zugangsdaten Key Store und externe Secret-Speicher Cloud-Zugangsdaten, optionale Vault-Integration
Lizenz MIT Community, kommerzielles Pro und Enterprise Open Source unter MPL 2.0

Gaia hält ein genehmigtes Modul und seine separaten Stack-Instanzen zusammen. Integrierter Terraform-State-Speicher ist im Open-Source-Projekt enthalten. Semaphore UI bereitet Vorgänge rund um die vorhandenen Werkzeuge und Konfigurationen des Teams vor. Ein Provisionierungsjob kann deshalb seine Oberfläche mit den Ansible-Playbooks und Wartungsjobs teilen, die über den gesamten Lebenszyklus der Umgebung verwendet werden.

Dieser größere Umfang erfordert nicht, jeden Job in einen Workflow zu verwandeln. Ein Kollege kann einen vorbereiteten Sicherungs- oder Dienstneustartjob unabhängig starten. Ingenieure verbinden Provisionierung und Konfiguration, wenn die Prozedur beides erfordert.

Funktionsvergleich

Wiederverwendbare Eingaben, Inventare und Zugangsdaten lassen Kollegen einen Vorgang ausführen, ohne seine Konfiguration neu aufzubauen. Ausführungseinstellungen bestimmen, wo er läuft. Zeitpläne, Workflows und aufgezeichnete Ergebnisse unterstützen die Arbeit nach der Provisionierung.

Installation und Einrichtung

Ein gemeinsamer Automatisierungsdienst kann auf einem vorhandenen Server oder als Teil einer Containerplattform laufen. Anwendung und Job-Laufzeit sind getrennte Bereitstellungsentscheidungen.

UnterstütztTeilweise unterstütztNicht unterstützt
Installation und Einrichtung: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Eigenständiges natives Binary Ja NeinJava-Laufzeitumgebung erforderlich
Native Linux-Pakete Ja NeinJava-Anwendungsdistribution
Docker-Bereitstellung Ja JaDocker-Compose-Dienste
Kubernetes-Bereitstellung Ja Ja

Gaia trennt seine Java-Webanwendung, MongoDB-Datenbank und den Ausführungs-Runner. Der Runner startet Terraform in Docker-Containern oder Kubernetes-Pods, mit einem konfigurierbaren Limit für parallele Jobs. Docker Compose stellt diese Dienste zusammen. Ein experimentelles Helm-Chart bietet eine Kubernetes-Installationsmöglichkeit.

Semaphore UI läuft als Binärprogramm oder natives Paket sowie in Docker oder Kubernetes. Ein Team, das Routineautomatisierung von den Laptops seiner Ingenieure verlagert, kann auf einem vorhandenen Server beginnen und denselben Dienst für Terraform-Provisionierung und Ansible-Wartung verwenden. Der gewählte Ausführungsmodus bestimmt, ob Jobcontainer erforderlich sind.

Automatisierungstools

Provisionierung, Hostkonfiguration und Dienstwartung verwenden unterschiedliche Werkzeuge. Direkte Vorlagen lassen ein Team diese Prozeduren unabhängig ausführen. Terraform-Provisioner binden Befehle dagegen an einen Ressourcenlebenszyklus.

UnterstütztTeilweise unterstütztNicht unterstützt
Automatisierungstools: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Terraform / OpenTofu Ja TeilweiseTerraform-Module, keine OpenTofu-Vorlage
Ansible-Playbooks Ja TeilweiseProvisioner mit Ansible-Laufzeit
Direkte Terragrunt-Jobs Ja NeinTerraform-Befehlslebenszyklus
Bash Ja TeilweiseProvisioner mit dem erforderlichen Interpreter
PowerShell Ja TeilweiseProvisioner mit dem erforderlichen Interpreter
Python Ja TeilweiseProvisioner mit dem erforderlichen Interpreter
Unabhängige Ansible- und Skriptvorgänge Ja NeinRUN- und DESTROY-Stack-Jobs

Gaia führt Terraform-Module über eine generierte Terraform-Befehlssequenz aus. Terraform-Provisioner können Ansible oder Kommandozeilenprogramme aufrufen, wenn das Runner-Image oder das entfernte Ziel die erforderlichen Werkzeuge bereitstellt. Damit kann eine neu bereitgestellte Ressource konfiguriert werden. Der Befehl bleibt aber an eine Terraform-Ausführung gebunden, statt ein unabhängiger Gaia-Vorgang zu werden. Die standardmäßige Befehlserzeugung bietet keine separate OpenTofu- oder Terragrunt-Vorlage.

Semaphore UI hat direkte Vorlagen für Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell und Python. Ein Team kann Infrastruktur mit OpenTofu erstellen, Pakete mit Ansible konfigurieren und eine Python-Bereitschaftsprüfung ausführen. Später können die Ansible-Konfiguration oder der PowerShell-Wartungsvorgang allein laufen, ohne einen weiteren Terraform-Lebenszyklus zu starten. Das integrierte Pro-State-Backend hält außerdem Terraform/OpenTofu State und dessen Historie neben diesen Jobs.

Vorgangseinrichtung und Eingaben

Ein Autor bereitet die Konfiguration einmal vor, damit Kollegen einen wiederholbaren Vorgang anfordern können. Gaia speichert ein Modul und seine Stack-Instanzen. Semaphore UI speichert Vorlagen, die für Provisionierung und Wartung wiederverwendet werden können.

UnterstütztTeilweise unterstütztNicht unterstützt
Vorgangseinrichtung und Eingaben: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Gespeicherte Vorgangskonfiguration JaTask Templates JaModule und Stacks
Eingabeformulare Ja Ja
Variablenkonfiguration und Wiederverwendung JaBenannte, vorlagenübergreifend geteilte Gruppen JaModulstandardwerte und Werte pro Stack
Eingabevalidierung JaPflichtfelder, Ganzzahlprüfung und Auswahlmöglichkeiten JaPflichtwerte und reguläre Ausdrücke

Der Modulautor in Gaia definiert Quellrepository, Terraform-Version und Variablenschema. Nutzer erstellen Stacks aus diesem Modul und liefern passende Werte und Cloud-Zugangsdaten für ihre Umgebung. Der Stack wird zu einer dauerhaften Instanz mit eigenem State und eigenen Jobs. Das passt zu einem Katalog unabhängig angeforderter Infrastruktur. Gaia validiert Pflichtwerte und konfigurierbare reguläre Ausdrücke. Semaphore-UI-Eingabeformulare validieren Pflichtfelder, Ganzzahlen und Auswahlwerte, ohne gleichwertige konfigurierbare Regex-Regel.

Semaphore UI nennt den gespeicherten Vorgang Task Template. Es verbindet ein Repository, Werkzeugkonfiguration, Variablen und die benötigten Inventare oder Zugangsdaten. Benannte Variablengruppen verwenden Umgebungseinstellungen über Vorlagen hinweg wieder. Formularfelder erfassen die Starteingaben. Eine Dienstneustartvorlage kann beispielsweise eine Auswahl von Dienst und Umgebung anbieten, statt den Kollegen einen Befehl zusammenstellen zu lassen. Eine Provisionierungsvorlage kann dasselbe Muster für Umgebungsparameter nutzen.

Terraform-Lebenszyklus

Eine nützliche Terraform-Oberfläche muss mehr leisten als einen Befehl zu starten. Sie braucht eine wiederholbare Beziehung zwischen Code, Eingaben, State und den Vorgängen, die Nutzer anfordern dürfen.

UnterstütztTeilweise unterstütztNicht unterstützt
Terraform-Lebenszyklus: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Terraform plan und apply Ja Ja
Separate Umgebungsinstanzen JaVorbereitete Vorlagen und Workspace-Konfiguration JaAus einem Modul erstellte Stacks
Umgebungsspezifischer State und Zugangsdaten JaKonfiguriertes Backend, Workspace und Zugangsdaten JaSeparater Stack-State und Cloud-Zugangsdaten
Eine Umgebung zerstören JaTerraform/OpenTofu-destroy-Vorgang JaDestroy-Job
Standardmäßig einen zuvor gespeicherten Plan anwenden Nein Nein
Integrierter State-Speicher JaPro Ja

Gaia führt plan, apply und destroy mit dem konfigurierten Modul, den Eingaben und Cloud-Zugangsdaten eines Stacks aus. Sein integriertes Backend hält den State dieses Stacks. Die Stack-Seite sammelt Ausgaben und Jobhistorie. Separate Testumgebungen können daher unabhängigen State und eigene Ausführungsaufzeichnungen behalten, auch wenn sie aus demselben Modul stammen.

Semaphore UI verwendet ein Task Template zur Auswahl von Terraform/OpenTofu-Repository, Workspace und Konfiguration. Variablengruppen verwenden Einstellungen über verwandte Jobs hinweg wieder. Eingabeformulare erfassen Werte beim Start. Ein Ingenieur kann einen Umgebungsbereitstellungsvorgang einmal vorbereiten und Kollegen ihn anschließend über diese gespeicherte Konfiguration anfordern lassen. Jede Umgebung benötigt auch eigene Variablen, Zugangsdaten und Backend-State. Gaia stellt diese als separate Stack-Instanzen dar. In Semaphore UI bereitet das Team die entsprechende Vorlagen-, Workspace- und Backend-Konfiguration vor. Workspace-Isolation hängt vom Backend ab. Allein die Auswahl eines Workspace trennt daher nicht bei jedem Backend den State. Terragrunt und OpenTofu stehen neben Terraform als direkte Vorlagenoptionen bereit.

Terraform-Vorlagenkonfiguration in Semaphore UI mit Repository, Workspace und Variablengruppen.
Semaphore UI. Eine Terraform-Vorlage verbindet Quellcode, Workspace und wiederverwendbare Variablen in einem vorbereiteten Vorgang.
Gaia-Moduleditor mit Repository-Einstellungen, autorisierten Teams und bearbeitbaren Eingabevariablen.
Gaia. Ein Modul definiert sein Repository, autorisierte Teams und die Eingabevalidierung. Offizielles Projektbeispiel. Quelle

State ist ein eigener Teil dieser Einrichtung. Gaia enthält ohne kommerzielle Lizenz ein State-Backend für jeden Stack. Semaphore UI verwendet das für den Terraform/OpenTofu-Code konfigurierte Backend. Pro bietet zusätzlich ein integriertes HTTP-State-Backend mit Historie und Verwaltung in der Oberfläche. Dieses Backend in Semaphore UI zu halten platziert den gemeinsamen State neben die Jobs, die ihn ändern, statt einen weiteren State-Dienst hinzuzufügen.

Keines der Produkte wendet standardmäßig eine zuvor gespeicherte Plandatei an. Gaia 2.4.0 zeigt das Planungsergebnis, aber sein apply-Befehl verwendet nicht die gespeicherte Plandatei. Die Standardausführung von Semaphore UI plant und wendet ebenfalls getrennt an. Muss eine Genehmigung genau die vorgeschlagene Änderung umfassen, braucht die Prozedur eine ausdrückliche Speicherung und Wiederverwendung dieses Plans.

Inventar

Ein Patching- oder Zertifikatsprüfungsjob braucht einen wiederholbaren Weg zur Hostauswahl. Ansible-Inventare erfüllen diesen Zweck. Terraform State beschreibt dagegen die von einem Stack verwalteten Ressourcen.

UnterstütztTeilweise unterstütztNicht unterstützt
Inventar: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Wiederverwendbare Ansible-Inventories JaDefinitionen in der Oberfläche oder Dateien in Git NeinKeine Inventarressource
Dynamische Host-Erkennung JaAnsible-Inventarplugins TeilweiseGeneriertes Inventar oder Ansible-Aufruf aus Terraform

Gaia hält Terraform-Ressourcen und Ausgaben bei jedem Stack. Eine Terraform-Ausgabe kann die von einem Provisioner oder einem anderen System benötigte Hostadresse liefern, erstellt aber keine Ansible-Inventarressource in Gaias Oberfläche. Über einen Provisioner aufgerufenes Ansible muss sein Inventar als Teil dieser Automatisierung erhalten oder erzeugen.

Semaphore UI speichert Ansible-Inventare als wiederverwendbare Projektressourcen. Teams können eine statische Definition bearbeiten, eine Datei aus Git verwenden oder Ansible-Inventarplugins Hosts beim Jobstart ermitteln lassen. Dasselbe Inventar kann Deployment, Patching und Zertifikatsprüfungen dienen. Das ist besonders nützlich, wenn Provisionierung nur der Anfang der Arbeit ist und Bediener während des gesamten Lebenszyklus zu einem bestehenden Bestand zurückkehren.

Ausführung

Ausführungseinstellungen bestimmen, welche Maschine die Ziele erreicht und welche Abhängigkeiten sie bereitstellt. Beide Plattformen können in privater Infrastruktur ausführen. Für Jobs ohne Container bieten sie unterschiedliche Möglichkeiten.

UnterstütztTeilweise unterstütztNicht unterstützt
Ausführung: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Jobs ohne Container Ja NeinTerraform-Job-Runner erfordert Docker oder Kubernetes
Fernausführung JaRunners JaSeparater Gaia Runner
Docker-Jobausführung JaPro Ja
Kubernetes-Job-Pods JaEnterprise Ja

Gaia trennt die Anwendung von ihrem Runner. Der Runner fragt ausstehende Terraform-Schritte ab und führt sie in Docker-Containern oder Kubernetes-Pods mit konfigurierbarer Parallelität aus. Er kann nahe an privater Infrastruktur laufen, solange er die Gaia-API und die vom Modul verwendeten Dienste erreicht. Das gewählte Image liefert Terraform und zusätzliche Programme, die Provisioner benötigen.

Semaphore UI kann Jobs auf seinem Anwendungsserver oder auf Runnern nahe den Zielsystemen ausführen. So kann eine kleine Installation ohne Containerplattform beginnen und eine größere getrennte Netzwerke über Runner erreichen. Pro ergänzt Projekt-Runner und Docker-Jobausführung. Enterprise ergänzt Kubernetes-Job-Pods. Die Webanwendung in Docker zu installieren und jeden Job in seinem eigenen Container auszuführen bleiben getrennte Entscheidungen.

Zeitplanung

Zeitplanung zählt, wenn Infrastrukturjobs zu einem gewählten Zeitpunkt laufen oder ohne manuellen Start wiederholt werden sollen. Semaphore UI plant seine vorbereiteten Vorlagen direkt. Gaia benötigt einen externen Scheduler zur Koordination von Terraform-Stack-Jobs. Das breitere Aufgabenmodell von Semaphore UI lässt dieselbe Planungsoberfläche auch unabhängige Sicherungen, Patching und Zertifikatsprüfungen abdecken.

UnterstütztTeilweise unterstütztNicht unterstützt
Zeitplanung: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Cron-Zeitpläne Ja TeilweiseExterner Scheduler ruft die Job-API auf
Einmalig geplante Ausführungen Ja TeilweiseExterner Scheduler ruft die Job-API auf

Semaphore UI speichert Cron- und einmalige Zeitpläne für vorbereitete Vorlagen. Eine nächtliche Sicherung, eine wiederkehrende Zertifikatsprüfung oder ein Patching-Job können Inventar, Zugangsdaten und Starteinstellungen des Autors wiederverwenden. Manuelle und geplante Ausführungen erscheinen anschließend in derselben Ausführungshistorie.

Gaia 2.4.0 enthält keine Zeitplanungsoberfläche. Ein externer Scheduler kann einen RUN- oder DESTROY-Job über POST /api/stacks/{id}/{jobType} erstellen und dessen Plan anschließend über POST /api/jobs/{jobId}/plan starten. Nach Abschluss des Plans wird die Änderung mit einem separaten POST an /api/jobs/{jobId}/apply angewendet. Ein Scheduler muss diesen Lebenszyklus verarbeiten und das endgültige Jobergebnis prüfen, statt die Erstellung einer Job-ID als abgeschlossene Ausführung zu behandeln.

Workflows

Eine vollständige Umgebungsprozedur kann Infrastruktur bereitstellen, Hosts konfigurieren und einen Dienst prüfen. Gaia verwaltet die plan/apply-Phasen eines Stack-Jobs. Semaphore UI verbindet dagegen getrennte Vorgänge und ihre Ergebnisse.

UnterstütztTeilweise unterstütztNicht unterstützt
Workflows: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Visuelle Workflows über Werkzeuge hinweg Ja NeinKein Workflow-Editor für mehrere Werkzeuge
Genehmigungsschritte Ja TeilweiseBestätigung zwischen Terraform plan und apply
Werte zwischen Vorgängen übergeben Ja TeilweiseStack-Ausgaben über Code- oder API-Integration

Gaia führt einen Stack durch Planung und Anwendung. Seine Oberfläche bietet nach dem Plan eine separate Bestätigung, auch beim Zerstören eines Stacks. Terraform-Provisioner können weitere Aktionen innerhalb dieses Lebenszyklus ausführen. Ein externes System kann mehrere Jobs über die API koordinieren. Gaia bietet keinen visuellen Graphen unabhängig wiederverwendbarer Ansible-, Terraform- und Skriptvorgänge.

Semaphore UI verbindet gespeicherte Vorlagen durch einen visuellen Workflow mit Genehmigung sowie Erfolgs- und Fehlerpfaden. Ein Rollout kann Infrastruktur bereitstellen, auf Genehmigung warten, Hosts konfigurieren und einen Prüfschritt ausführen. Jede Vorlage bleibt für spätere Wartung verfügbar. Erfasste Werte können mit dem lokalen Executor auf dem Server oder einem Runner zwischen Schritten übergeben werden. Erzeugte Dateien und gespeicherte Terraform-Pläne benötigen weiterhin zugänglichen Speicher oder eine ausdrückliche Übertragung. Keines der Produkte wendet standardmäßig einen zuvor gespeicherten Terraform-Plan an.

Zugriffskontrolle

Ein Provisionierungsmodul zu teilen und einen vorbereiteten Dienstneustart zu delegieren erfordert unterschiedliche Grenzen. Zugriffseinstellungen sollten dem Autor erlauben, einen Vorgang vorzubereiten und Kollegen die für seine Nutzung erforderlichen Berechtigungen zu geben.

UnterstütztTeilweise unterstütztNicht unterstützt
Zugriffskontrolle: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Rollenbasierter Zugriff JaProjektrollen JaRollen und Modulorganisationen
Benutzerdefinierte Rollen JaEnterprise NeinFeste Anwendungsrollen
Externe Anmeldung JaProLDAP und OIDC JaGitHub- und GitLab-OAuth2, LDAP

Gaia verwendet Organisationen zum Teilen von Modulen und besitzt Administrator- und Nutzerrollen. Ein Modulautor kann einem Team eine genehmigte Terraform-Definition bereitstellen, während Nutzer die Konfiguration ihrer eigenen Stacks liefern. GitHub- und GitLab-Integrationen verbinden OAuth2-Anmeldung mit Repository-Import. LDAP wird ebenfalls unterstützt.

Semaphore UI Community organisiert gemeinsame Automatisierung in Projekten. Projektrollen steuern, wer Automatisierung im Projekt ansehen, ausführen oder bearbeiten darf. Kollegen mit Ausführungsberechtigung können ein Deployment, eine Sicherung oder einen Wartungsjob starten und das Ergebnis prüfen. Der Ingenieur bereitet den Vorgang vor. Der Kollege nutzt dessen gespeicherte Konfiguration und Starteingaben.

Enterprise ergänzt benutzerdefinierte Rollen und Ausführungsberechtigungen auf Vorlagenebene, wenn der Zugriff auf ausgewählte Vorgänge beschränkt werden muss. Beispielsweise kann ein Team eine Dienstneustartvorlage delegieren, ohne dem Bediener allgemeine Projektbearbeitungsrechte zu geben. Diese Grenze ergibt sich gemeinsam aus Rollenberechtigungen und Vorgangskonfiguration, nicht allein aus dem Eingabeformular. Pro ergänzt LDAP- und OIDC-Anmeldung für Teams mit einem zentralen Identitätsanbieter. Semaphore UI Pro ergänzt außerdem TOTP-Zwei-Faktor-Authentifizierung für lokale Konten.

Secrets

Cloud-Zugangsdaten für Provisionierung und SSH-Zugangsdaten zur Hostkonfiguration sind getrennte Ressourcen. Ein gemeinsamer Dienst sollte sie wiederverwenden, ohne den Bediener bei jeder Ausführung zum Einfügen eines Secrets aufzufordern.

UnterstütztTeilweise unterstütztNicht unterstützt
Secrets: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Gespeicherte Zugangsdaten JaSSH-Schlüssel und Passwörter JaCloud-Zugangsdatenobjekte
HashiCorp Vault JaProSecret-Lookup JaTransit-Verschlüsselung und dynamische AWS-Zugangsdaten
Integrierter OpenBao-Lookup JaPro Nein
Integrierter AWS-Secrets-Manager-Lookup JaEnterprise Nein
Integrierter Azure-Key-Vault-Lookup JaEnterprise Nein
Integrierter Devolutions-Server-Lookup JaEnterprise Nein
Integrierter CyberArk-Lookup JaEnterprisePVWA REST API Nein

Gaia liefert Cloud-Zugangsdaten für AWS, Google Cloud und Azure. Seine optionale Vault-Integration verwendet die Transit Engine zur Verschlüsselung und kann dynamische AWS-Zugangsdaten von einer Vault Secrets Engine anfordern. Diese Zugangsdaten unterstützen den Terraform-Stack-Lebenszyklus.

Der Key Store von Semaphore UI unterstützt die in den Teamprozeduren verwendeten Zugangsdaten, einschließlich SSH-Schlüsseln und Passwörtern für Ansible-Hosts. Ein vorbereiteter Vorgang verweist auf diese gespeicherten Einträge, statt den Bediener bei jedem Start zum Einfügen von Zugangsdaten aufzufordern. Pro ergänzt Secret-Lookups aus HashiCorp Vault und OpenBao. Enterprise ergänzt Integrationen für AWS Secrets Manager, Azure Key Vault und Devolutions Server sowie CyberArk über seine PVWA API.

Beispielsweise kann eine Umgebung Cloud-Zugangsdaten für die Provisionierung und einen SSH-Schlüssel für die anschließende Ansible-Konfiguration nutzen. Es bleiben getrennte Zugangsdaten, die dem jeweiligen Vorgang zugeordnet sind. Beide Plattformen können mit Vault arbeiten. Gaias Verschlüsselung und dynamische Zugangsdaten unterscheiden sich jedoch vom Abruf eines gespeicherten Secrets für einen Job. Die integrierten Zugangsdatenarten von Gaia enthalten keine Connectors für die anderen oben aufgeführten Secret-Speicher. Terraform-Code kann Secrets über eigene Datenquellen oder externe Befehle abrufen. Dieser Lookup wird in der Automatisierung konfiguriert und gepflegt, nicht in Gaias Zugangsdatenoberfläche.

Logs und Audit

Nach einem Job brauchen Bediener sein Ergebnis und genügend Kontext, um einen Fehler zu untersuchen. Terraform-Stack-Historie und Ansible-Hostergebnisse beantworten unterschiedliche Fragen zur selben Umgebung.

UnterstütztTeilweise unterstütztNicht unterstützt
Logs und Audit: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
Ausführungsverlauf und Logs Ja Ja
Ausführender Nutzer und Zeitstempel Ja Ja
Integrierter Ansible-Host-/Aufgabenbericht JaPro NeinTerraform-plan/apply-Ausgabe
Administrative Audit-Oberfläche JaAnmeldungen und aufgezeichnete Aktionen NeinJobhistorie, keine administrative Audit-Oberfläche

Gaia erfasst Nutzer, Status, Zeitangaben und plan/apply-Schritte eines Stack-Jobs. Diese Historie hilft dem Team, Provisionierungsänderungen einer Umgebung und die Terraform-Ausgabe zu untersuchen. Sie dokumentiert Stack-Vorgänge und ist keine Ansible-Hostberichts- oder administrative Audit-Oberfläche.

Semaphore UI speichert die Aufgabenhistorie über alle unterstützten Werkzeuge hinweg. Ansible-Übersichten in Pro ergänzen Host- und Aufgabenergebnisse und helfen Bedienern zu erkennen, auf welchen Servern ein Patch oder eine Zertifikatsprüfung fehlgeschlagen ist. Das Audit-Log erfasst Anmeldungen und unterstützte administrative Aktionen getrennt von der Aufgabenausgabe. Ein Team mit Provisionierung und Hostwartung kann diese Vorgänge daher im selben Dienst untersuchen, ohne Terraform State als Bericht über jede Aktion auf einem Server zu behandeln. Pro ergänzt Audit-Filter und Export, einschließlich Syslog- und Splunk-HEC-Übertragung für die SIEM-Pipeline des Teams.

Integrationen und KI-gestützte Arbeit

Eine vorhandene Pipeline oder ein Dienst kann vorbereitete Automatisierung über eine API anfordern. Repository-Integrationen bringen den Code in den Dienst. Eine ereignisgesteuerte Verbindung braucht zusätzlich einen zuverlässigen Weg, das Ergebnis zu verfolgen.

UnterstütztTeilweise unterstütztNicht unterstützt
Integrationen und KI-gestützte Arbeit: Gaia und Semaphore UI
Kriterien Semaphore UI Gaia
REST API Ja Ja
Git-Repositories Ja JaModulimporte aus GitHub und GitLab
Eingehende Automatisierungs-Webhooks JaAnfrageabgleich und Extraktion von Eingaben TeilweiseExterner Empfänger ruft die Job-API auf

Gaia importiert Module aus GitHub oder GitLab und stellt APIs für Stacks, Jobs und ihre Ergebnisse bereit. Eine CI-Pipeline oder ein externer Anfragedienst kann einen Stack-Job erstellen, die Planung starten und entscheiden, wann der Plan angewendet wird. Eine webhookgesteuerte Einrichtung braucht einen Adapter, der diese Aufrufe ausführt und das Ergebnis verfolgt. Semaphore UI bietet eine REST-API und eingehende Integrationswebhooks, die Anfragen abgleichen und ihre Werte den vorbereiteten Aufgabeneingaben zuordnen.

Ein Team, das Gaias Terraform-Katalog beibehält, kann über eine API-Integration nach abgeschlossener Provisionierung eine Ansible-Konfigurations- oder Wartungsvorlage in Semaphore UI auslösen. Semaphore UI verwaltet dann Inventar, Zugangsdaten und Ausführungsaufzeichnung dieses Vorgangs. Diese Verbindung implementiert das Team selbst. Sie ist keine integrierte Gaia-zu-Semaphore-Integration. Beide Projekte veröffentlichen außerdem Dokumentation und Quellcode, die ein Programmierassistent beim Entwerfen dieser Verbindung oder Untersuchen von Konfiguration und Jobausgabe heranziehen kann.

Lizenzierung und Support

Gaia und Semaphore UI bieten beide kostenlose, selbst gehostete Open-Source-Editionen. Ihr Umfang unterscheidet sich schon vor der Betrachtung kostenpflichtiger Funktionen: von einem Terraform-Modulkatalog bis zu einem Dienst für mehrere Automatisierungswerkzeuge. Kommerzielle Funktionen und Support sind ein eigener Teil der Entscheidung.

Open-Source- und kommerzielle Optionen

Gaia steht unter der Lizenz MPL-2.0 und enthält sein Terraform-Stack-State-Backend. Semaphore UI Community steht unter der MIT-Lizenz und deckt Vorlagen, Workflows, Zeitpläne, Projektrollen und Ausführungshistorie über seine unterstützten Werkzeuge hinweg ab. Pro ergänzt das integrierte State-Backend, Projekt-Runner, Docker-Aufgabenausführung und Integrationen externer Vaults. Enterprise ergänzt gezieltere Kontrollen für Zugriff, Ausführung und Verfügbarkeit.

Für ein Team, das sowohl Terraform-Provisionierung als auch wiederkehrende Ansible-Vorgänge benötigt, liefern diese Community-Funktionen bereits einen gemeinsamen Automatisierungsdienst. Ob Pro oder Enterprise nötig ist, folgt aus den Anforderungen an State, Zugriff und Ausführung, nicht allein aus der Nutzung mehrerer Werkzeuge.

Wartung und Support

Gaias neueste veröffentlichte Version ist 2.4.0 vom 12. August 2022. Bei der Prüfung am 21. Oktober 2026 zeigte der Hauptbranch des Anwendungsrepositories auf denselben Commit. Ein Team, das Gaia einführt, muss aktuelle Abhängigkeiten bewerten und benötigte Änderungen selbst pflegen.

Semaphore UI veröffentlicht weiterhin Releases und bietet Herstellersupport innerhalb derselben Produktfamilie. Community-Hilfe erfolgt nach bestem Bemühen, Pro enthält Herstellersupport zu Geschäftszeiten und Enterprise bietet individuelle Supportoptionen. Ein Team kann in Community mit gemeinsam genutzten Jobs beginnen und kommerzielle Funktionen oder Support hinzunehmen, wenn seine betrieblichen Anforderungen wachsen.

Auswahlkriterien

Beginnen Sie damit, wie das Team Infrastruktur anfordern und verwalten möchte. Gaia organisiert die Provisionierung um einen Modulkatalog und getrennte Stack-Instanzen. Semaphore UI organisiert sie um wiederverwendbare Terraform/OpenTofu-Vorlagen, Variablen und Ausführungseinstellungen, mit Zeitplänen und Workflows für die umfassendere Prozedur. Beide können Provisionierung leisten. Die Wahl hängt vom Betriebsmodell ab und davon, ob dieselbe Oberfläche auch andere Automatisierung unterstützen muss.

Wann Gaia wählen?

Gaia ist eine fokussierte Wahl, wenn Sie genehmigte Terraform-Module veröffentlichen und Nutzern die Erstellung eigener Stack-Instanzen ermöglichen möchten.

  • Separate Stack-Instanzen sind der Kerndienst. Jede angeforderte Umgebung benötigt eigene Eingaben, Zugangsdaten, State und eine plan/apply/destroy-Historie. Konfigurationsmanagement und Wartung werden an anderer Stelle erledigt.
  • Inklusive State-Speicherung ist wichtig. Sie möchten Modulkatalog und Terraform-State-Backend in einem Open-Source-Produkt. Das Team kann die Wartung von Anwendung und Runner übernehmen.

Wann sollte man Semaphore UI wählen?

Wählen Sie Semaphore UI, wenn Sie wiederverwendbare Terraform/OpenTofu-Vorgänge mit flexibler Ausführung und kommerziellen Supportoptionen möchten oder Provisionierung mit Ansible, Bash, PowerShell und Python verbinden müssen.

  • Sie möchten Bereitstellung und Support auswählen können. Beginnen Sie auf einem bestehenden Server mit einem Binärprogramm oder nativen Paket, ergänzen Sie entfernte Ausführung nach Bedarf und erhalten Sie Pro- oder Enterprise-Funktionen sowie Herstellersupport innerhalb derselben Produktfamilie.
  • Ansible-Arbeit geht nach der Provisionierung weiter. Derselbe Dienst muss Hosts konfigurieren und Patching, Zertifikatsprüfungen oder Sicherungen mit vorhandenen Inventaren, Zugangsdaten und Playbooks ausführen.
  • Ihr IaC-Code definiert bereits die betriebenen Umgebungen. Bereiten Sie Terraform/OpenTofu- oder Terragrunt-Vorlagen mit den benötigten Variablen, Zugangsdaten und State-Einstellungen vor. Lassen Sie Kollegen diese Vorgänge anschließend ausführen oder planen. Das passt zu einem Team, das bestehende Konfigurationen gemeinsam ausführen möchte, ohne den Dienst um einen Modulkatalog und separat angeforderte Stack-Instanzen zu organisieren.
  • Ihre Prozedur kombiniert mehrere Werkzeuge. Auf die Provisionierung mit Terraform/OpenTofu oder Terragrunt können über wiederverwendbare Vorlagen und Workflows Ansible-Konfiguration, Bash- oder PowerShell-Vorgänge und Python-Prüfungen folgen.

FAQ

Können Kollegen aus einer Konfiguration separate Umgebungen erstellen?

Gaia veröffentlicht ein Terraform-Modul einmal und lässt Nutzer separate Stacks mit eigenen Eingaben, Zugangsdaten und eigenem State erstellen. Semaphore UI verwendet Vorlagen, Formulareingaben, Variablengruppen und Terraform/OpenTofu-Workspaces. Geben Sie jeder Umgebung bei der Vorbereitung einer Umgebungsanfrage in Semaphore UI den passenden Workspace und die passende Backend-State-Konfiguration.

Welches State-Backend würden wir mit Semaphore UI verwenden?

Semaphore UI kann das bereits im Terraform/OpenTofu-Code konfigurierte Backend beibehalten. Pro bietet außerdem ein integriertes HTTP-Backend mit Historie und Verwaltung in der Oberfläche. Gaia enthält sein Stack-State-Backend im Open-Source-Produkt. Beim Wechsel der Startoberfläche muss die Beziehung zwischen jeder Umgebung, ihrer Konfiguration und ihrem State erhalten bleiben.

Kann die Ausführung in einer privaten Umgebung bleiben?

Ja. Gaia Runner ist von der Webanwendung getrennt und führt Terraform in Docker-Containern oder Kubernetes-Pods aus. Semaphore UI führt Aufgaben auf seinem Server oder separaten Runnern aus, mit optionaler Docker-Ausführung pro Aufgabe in Pro und Kubernetes-Ausführung in Enterprise. Die Ausführungsmaschine braucht Zugriff auf die Zielinfrastruktur und die erforderlichen Dienste.

Kann auf Provisionierung Ansible-Konfiguration und -Wartung folgen?

Ja, in Semaphore UI. Ein Workflow kann Terraform/OpenTofu-Provisionierung, Ansible-Konfiguration und eine Prüfaufgabe verbinden. Die einzelnen Vorlagen bleiben außerdem für spätere Sicherungen, Updates oder Dienstvorgänge verfügbar. Zeitpläne können die Wartung wiederholen. Gaias integrierter Lebenszyklus konzentriert sich auf Terraform plan, apply und destroy. Anschließende Vorgänge werden durch andere Systeme erledigt.

Können wir einen Gaia-Modulkatalog direkt nach Semaphore UI übertragen?

Der zugrunde liegende Terraform-Code kann wiederverwendet werden. Gaias Modul- und Stack-Katalog ist jedoch ein anderes Modell als Vorlagen und Workspaces in Semaphore UI. Ordnen Sie Eingaben, Zugangsdatenreferenzen, Backend-State und Ausführungsabhängigkeiten jeder Umgebung dem vorbereiteten Vorgang zu.

War dieser Artikel hilfreich?

Quellen

  1. Gaia contributors, “Gaia v2.4.0 release”. URL: https://github.com/gaia-app/gaia/releases/tag/v2.4.0 (abgerufen am: ).
  2. Gaia, “Gaia concepts”. URL: https://docs.gaia-app.io/getting-started/concepts/ (abgerufen am: ).
  3. Gaia, “QuickStart”. URL: https://docs.gaia-app.io/getting-started/quick-start/ (abgerufen am: ).
  4. Gaia, “Gaia Runner configuration”. URL: https://docs.gaia-app.io/configuration/runner-configuration/ (abgerufen am: ).
  5. Gaia contributors, “Mozilla Public License 2.0”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/LICENSE (abgerufen am: ).
  6. Gaia contributors, “Gaia v2.4.0 source code”. URL: https://github.com/gaia-app/gaia/tree/v2.4.0 (abgerufen am: ).
  7. Gaia, “GitHub integration”. URL: https://docs.gaia-app.io/configuration/github-integration/ (abgerufen am: ).
  8. Gaia, “GitLab integration”. URL: https://docs.gaia-app.io/configuration/gitlab-integration/ (abgerufen am: ).
  9. Semaphore UI, “Installation”. URL: https://semaphoreui.com/docs/admin-guide/installation (abgerufen am: ).
  10. Semaphore UI, “Applications”. URL: https://semaphoreui.com/docs/user-guide/apps (abgerufen am: ).
  11. Semaphore UI, “Terraform/OpenTofu”. URL: https://semaphoreui.com/docs/user-guide/apps/terraform (abgerufen am: ).
  12. Semaphore UI, “Task Templates”. URL: https://semaphoreui.com/docs/user-guide/task-templates (abgerufen am: ).
  13. Semaphore UI, “Workflows”. URL: https://semaphoreui.com/docs/user-guide/workflows (abgerufen am: ).
  14. Semaphore UI, “Runners”. URL: https://semaphoreui.com/docs/admin-guide/runners (abgerufen am: ).
  15. Semaphore UI, “Semaphore UI editions”. URL: https://semaphoreui.com/pricing (abgerufen am: ).
  16. Semaphore UI, “Variable Groups”. URL: https://semaphoreui.com/docs/user-guide/environment (abgerufen am: ).
  17. Gaia, “Gaia interface example”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/README.md (abgerufen am: ).
  18. Gaia contributors, “Terraform plan and apply command construction”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/runner/RunnerCommandBuilder.java (abgerufen am: ).
  19. Semaphore UI, “Terraform execution implementation”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/db_lib/TerraformApp.go (abgerufen am: ).
  20. Semaphore UI, “Inventory”. URL: https://semaphoreui.com/docs/user-guide/inventory (abgerufen am: ).
  21. Semaphore UI, “Schedules”. URL: https://semaphoreui.com/docs/user-guide/schedules (abgerufen am: ).
  22. Semaphore UI, “Semaphore cron and one-time schedule execution”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/services/schedules/SchedulePool.go (abgerufen am: ).
  23. Semaphore UI, “Task history and output”. URL: https://semaphoreui.com/docs/user-guide/tasks (abgerufen am: ).
  24. Semaphore UI, “Team roles and extended RBAC”. URL: https://semaphoreui.com/docs/user-guide/team#extended-rbac (abgerufen am: ).
  25. Semaphore UI, “Key Store”. URL: https://semaphoreui.com/docs/user-guide/key-store (abgerufen am: ).
  26. Semaphore UI, “Semaphore local execution, workflow outputs, inventory paths, host limits and branch overrides”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/services/tasks/local_executor.go (abgerufen am: ).
  27. Gaia contributors, “Stack job launch API for RUN and DESTROY”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/stacks/controller/StackRestController.java#L104-L123 (abgerufen am: ).
  28. Gaia contributors, “Independent stacks, variables and credential references”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/stacks/bo/Stack.java (abgerufen am: ).
  29. Semaphore UI, “External secret storage types in the Semaphore UI 2.20 candidate”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/db/SecretStorage.go (abgerufen am: ).
  30. Gaia contributors, “Gaia 2.4.0 built-in credential types”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/credentials/Credentials.kt (abgerufen am: ).
  31. Semaphore UI, “CyberArk secret storage for Enterprise”. URL: https://semaphoreui.com/docs/user-guide/key-store/cyberark (abgerufen am: ).
  32. Gaia contributors, “Gaia 2.4.0 application routes”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/client/app/router.js (abgerufen am: ).
  33. Gaia contributors, “Gaia RUN and DESTROY job types”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/stacks/bo/JobType.java (abgerufen am: ).
  34. Gaia contributors, “Configurable Terraform runner image”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/modules/bo/TerraformImage.kt (abgerufen am: ).
  35. Gaia contributors, “Runner scripts, stack inputs and execution environment”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/runner/RunnerController.java (abgerufen am: ).
  36. Gaia contributors, “Separate plan, apply and retry API actions”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/stacks/controller/JobRestController.kt (abgerufen am: ).
  37. Gaia contributors, “Stack job identity, user, timing and execution steps”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/stacks/bo/Job.java (abgerufen am: ).
  38. HashiCorp, “Terraform provisioners and command execution”. URL: https://developer.hashicorp.com/terraform/language/provisioners (abgerufen am: ).
  39. Semaphore UI, “Audit log and external log forwarding”. URL: https://semaphoreui.com/docs/admin-guide/audit-log (abgerufen am: ).
  40. Semaphore UI, “Incoming integrations and webhooks”. URL: https://semaphoreui.com/docs/user-guide/integrations (abgerufen am: ).
  41. Semaphore UI, “Reusable Git repositories”. URL: https://semaphoreui.com/docs/user-guide/repositories (abgerufen am: ).
  42. Gaia contributors, “Stack state API used to retrieve Terraform outputs”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/src/main/java/io/gaia_app/stacks/controller/TerraformStateController.java (abgerufen am: ).

Vergleich des Semaphore UI Teams auf Grundlage der oben aufgeführten Dokumentation, Repositories und Produktinformationen. Das Abrufdatum ist für jede Quelle angegeben.