Terraform-grænseflade: Semaphore UI og Gaia

Denis GukovStifter og CTO hos Semaphore UI
15 min. læsetid

Gaia og Semaphore UI tilbyder begge en webgrænseflade til infrastrukturautomatisering. Gaia tilbyder et selvbetjeningskatalog med Terraform-moduler og stacks. Semaphore UI kører Terraform/OpenTofu sammen med Ansible, Terragrunt, Bash, PowerShell og Python og dækker både provisionering og efterfølgende drift. Sammenligningen omfatter Gaia 2.4.0 og Semaphore UI 2.20.0.

Drøft artiklen med AI

Overblik

Et Terraform-modul kan oprette et miljø, men at dele processen kræver mere end at køre apply. Brugerne skal angive de rette input, bruge de rigtige legitimationsoplysninger og finde den resulterende state og outputværdierne. Serverne og tjenesterne kræver derefter konfiguration, backups, opdateringer og en driftsprocedure, som andre kan gentage.

Gaia pakker provisioneringsdelen som et Terraform-servicekatalog. Forfattere udgiver moduler, brugere opretter separat konfigurerede stacks, og jobs planlægger, anvender eller fjerner deres ressourcer. Hver stack holder sine egne variabler, legitimationsoplysninger, state og eksekveringshistorik samlet omkring én infrastrukturinstans.

Semaphore UI gør provisionering til en del af en bredere automatiseringstjeneste. Terraform/OpenTofu-skabeloner kan bruge workspaces, genanvendelige variabler og startformularer. Ansible-skabeloner tilføjer inventarer og værtskonfiguration, mens Bash-, PowerShell-, Python- og Terragrunt-operationer bruger samme projekt- og eksekveringsmodel. Workflows forbinder trinnene, og tidsplaner holder den efterfølgende vedligeholdelse i samme grænseflade.

Semaphore UI task skabeloner for flere automatiseringsværktøjer i ét projekt.
Semaphore UI. Forberedte Ansible-, Infrastructure as Code- og kommandolinjeoperationer deler et projekts opgaveliste.
Gaias stackvisning med inputvariabler, Terraform-jobs og output.
Gaia. En modulinstans administreres som en stack med egne input, jobs og state. Eksempel fra den officielle dokumentation. Kilde

Kort sammenligning

Begge produkter lader brugerne køre infrastrukturkode uden at genskabe opsætningen på hver bærbar computer. Hovedforskellen er, hvad den fælles tjeneste administrerer, fra et katalog med Terraform-moduler til provisionering, Ansible-konfiguration og tilbagevendende drift.

Gaia og Semaphore UI: centrale egenskaber
Kriterier Semaphore UI Gaia
Automatiseringsværktøjer Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell, Python Terraform
Genanvendelig enhed Opgaveskabeloner og workflows Terraform-moduler og uafhængigt konfigurerede stacks
Installation Binær fil, pakker, Docker, Kubernetes Java-applikation, Docker Compose, Kubernetes
Afhængigheder ved kørsel Database, Git og udvalgte værktøjer Java-applikation, MongoDB og en Docker/Kubernetes-runner
Afvikling På serveren eller runners Separat runner med Docker eller Kubernetes
Planlægning Cron-udtryk og engangskørsler Ekstern planlægning via API’er til plan/apply-jobs
Workflows Forbundne Ansible-, IaC- og scriptskabeloner Terraform-plan/apply-faser, ekstern orkestrering
Lagring af state Eksisterende backends eller indbygget HTTP-backend i Pro Indbygget backend til stack-state
Input Surveyformularer, genanvendelige variabelgrupper og hemmeligheder Modulvariabler, standardværdier og validering
Inventar Genanvendelige Ansible-definitioner og discovery-plugins Terraform-ressourcer og output pr. stack
Adgangsstyring Projektroller, brugerdefinerede roller i Enterprise Administrator- og brugerroller, organisationsbaseret adgang til moduler
Legitimationsoplysninger Key Store og eksterne lagre til hemmeligheder Cloud-legitimationsoplysninger, valgfri Vault-integration
Licens MIT Community, kommerciel Pro og Enterprise Open source under MPL 2.0

Gaia holder et godkendt modul og dets separate stackinstanser samlet med indbygget Terraform-state-lagring inkluderet i open source-projektet. Semaphore UI forbereder operationer omkring teamets eksisterende værktøjer og konfigurationer. Et provisioneringsjob kan derfor dele grænseflade med de Ansible-playbooks og vedligeholdelsesjobs, der bruges gennem hele miljøets levetid.

Det bredere omfang kræver ikke, at alle jobs bliver til workflows. En kollega kan starte et forberedt backup- eller servicegenstartsjob selvstændigt, mens ingeniører forbinder provisionering og konfiguration, når proceduren kræver begge dele.

Sammenligning af funktioner

Genanvendelige input, inventarer og legitimationsoplysninger lader kolleger køre en operation uden at genskabe konfigurationen. Eksekveringsindstillinger afgør, hvor operationen kører, mens tidsplaner, workflows og registrerede resultater understøtter arbejdet efter provisioneringen.

Installation og opsætning

En fælles automatiseringstjeneste kan køre på en eksisterende server eller som en del af en containerplatform. Applikationen og jobmiljøet er separate installationsvalg.

UnderstøttetDelvist understøttetIkke understøttet
Installation og opsætning: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Selvstændig native binærfil Ja NejJava-runtime påkrævet
Native Linux-pakker Ja NejDistribution af Java-applikation
Docker-installation Ja JaDocker Compose-tjenester
Kubernetes-installation Ja Ja

Gaia adskiller Java-webapplikationen, MongoDB-databasen og eksekveringsrunneren. Runneren starter Terraform i Docker-containere eller Kubernetes-pods med en konfigurerbar grænse for parallelle jobs. Docker Compose samler disse tjenester, mens et eksperimentelt Helm-chart giver mulighed for installation i Kubernetes.

Semaphore UI kører som binærfil eller systempakke samt i Docker eller Kubernetes. Et team, der flytter rutineautomatisering væk fra ingeniørernes bærbare computere, kan begynde på en eksisterende server og bruge samme tjeneste til Terraform-provisionering og Ansible-vedligeholdelse. Den valgte eksekveringstilstand afgør, om jobcontainere er nødvendige.

Automatiseringsværktøjer

Provisionering, værtskonfiguration og servicevedligeholdelse bruger forskellige værktøjer. Direkte skabeloner lader teamet køre disse procedurer selvstændigt, mens Terraform-provisioners knytter kommandoer til en ressources livscyklus.

UnderstøttetDelvist understøttetIkke understøttet
Automatiseringsværktøjer: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Terraform / OpenTofu Ja DelvistTerraform-moduler, ingen OpenTofu-skabelon
Ansible-playbooks Ja DelvistProvisioner med Ansible-kørselsmiljø
Direkte Terragrunt-jobs Ja NejTerraform-kommandoernes livscyklus
Bash Ja DelvistProvisioner med den nødvendige fortolker
PowerShell Ja DelvistProvisioner med den nødvendige fortolker
Python Ja DelvistProvisioner med den nødvendige fortolker
Selvstændige Ansible- og scriptoperationer Ja NejRUN- og DESTROY-stackjobs

Gaia kører Terraform-moduler gennem en genereret sekvens af Terraform-kommandoer. Terraform-provisioners kan kalde Ansible eller kommandolinjeprogrammer, når runnerimaget eller det eksterne mål indeholder de nødvendige værktøjer. Det kan konfigurere en nyoprettet ressource, men kommandoen forbliver knyttet til en Terraform-kørsel frem for at blive en selvstændig Gaia-operation. Standardopbygningen af kommandoer giver ikke en separat OpenTofu- eller Terragrunt-skabelon.

Semaphore UI har direkte skabeloner til Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell og Python. Et team kan oprette infrastruktur med OpenTofu, konfigurere pakker med Ansible og køre et parathedstjek i Python. Senere kan Ansible-konfigurationen eller PowerShell-vedligeholdelsen køre selvstændigt uden at starte endnu en Terraform-livscyklus. Den indbyggede Pro-state-backend holder også Terraform/OpenTofu-state og dens historik sammen med disse jobs.

Opsætning af operationer og input

En forfatter forbereder konfigurationen én gang, så kolleger kan anmode om en gentagelig operation. Gaia gemmer et modul og dets stackinstanser, mens Semaphore UI gemmer skabeloner, der kan genbruges til provisionering og vedligeholdelse.

UnderstøttetDelvist understøttetIkke understøttet
Opsætning af operationer og input: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Gemt operationskonfiguration JaTask Templates JaModuler og stacks
Inputformularer Ja Ja
Konfiguration og genbrug af variabler JaNavngivne grupper delt mellem skabeloner JaModulstandarder og værdier pr. stack
Inputvalidering JaObligatoriske felter, heltalskontrol og valg JaObligatoriske værdier og regulære udtryk

Forfatteren til et Gaia-modul definerer kilderepository, Terraform-version og variabelskema. Brugerne opretter stacks ud fra modulet og angiver værdier og cloud-legitimationsoplysninger til deres miljø. Stacken bliver en vedvarende instans med egen state og egne jobs, hvilket passer til et katalog over infrastruktur, som brugerne anmoder om uafhængigt. Gaia validerer obligatoriske værdier og konfigurerbare regulære udtryk. Semaphore UI-surveys validerer obligatoriske felter, heltal og valg uden en tilsvarende konfigurerbar regexregel.

Semaphore UI kalder den gemte operation en Task Template. Den samler et repository, værktøjskonfiguration, variabler og eventuelt inventar eller legitimationsoplysninger, som operationen kræver. Navngivne variabelgrupper genbruger miljøindstillinger på tværs af skabeloner, mens surveyfelter indsamler startparametre. En skabelon til servicegenstart kan eksempelvis tilbyde valg af tjeneste og miljø i stedet for at bede kollegaen bygge en kommando. En provisioneringsskabelon kan bruge samme mønster til miljøparametre.

Terraforms livscyklus

En nyttig Terraform-grænseflade skal kunne mere end at starte en kommando. Den skal skabe en gentagelig sammenhæng mellem kode, input, state og de operationer, brugerne må anmode om.

UnderstøttetDelvist understøttetIkke understøttet
Terraforms livscyklus: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Terraform plan og apply Ja Ja
Separate miljøinstanser JaForberedte skabeloner og workspacekonfiguration JaStacks oprettet ud fra et modul
Miljøspecifik state og legitimationsoplysninger JaKonfigureret backend, workspace og legitimationsoplysninger JaSeparat stack-state og cloud-legitimationsoplysninger
Fjernelse af et miljø JaTerraform/OpenTofu-destroy-operation JaDestroy-job
Anvendelse af en tidligere gemt plan som standard Nej Nej
Indbygget state-lagring JaPro Ja

Gaia kører plan, apply og destroy mod en stacks konfigurerede modul, input og cloud-legitimationsoplysninger. Den indbyggede backend holder stackens state, mens stacksiden samler output og jobhistorik. Separate testmiljøer kan derfor bevare uafhængig state og kørselsregistrering, selv når de stammer fra samme modul.

Semaphore UI bruger en Task Template til at vælge Terraform/OpenTofu-repository, workspace og konfiguration. Variabelgrupper genbruger indstillinger på tværs af beslægtede jobs, og surveyformularer indsamler input ved start. En ingeniør kan forberede en operation til miljøprovisionering én gang og derefter lade kolleger anmode om den gennem den gemte konfiguration. Hvert miljø har også brug for egne variabler, legitimationsoplysninger og backend-state. Gaia repræsenterer dem som separate stackinstanser. I Semaphore UI forbereder teamet den tilsvarende skabelon, workspace- og backendkonfiguration. Workspaceisolering afhænger af backenden, så valg af et workspace alene adskiller ikke state for alle backends. Terragrunt og OpenTofu er direkte skabelonvalg ved siden af Terraform.

Semaphore UI-konfiguration af en Terraform-skabelon med repository, workspace og variabelgrupper.
Semaphore UI. En Terraform-skabelon samler kildekode, workspace og genanvendelige variabler i én forberedt operation.
Gaias moduleditor med repositoryindstillinger, godkendte teams og redigerbare inputvariabler.
Gaia. Et modul definerer sit repository, godkendte teams og inputvalidering. Eksempel fra det officielle projekt. Kilde

State er en separat del af opsætningen. Gaia inkluderer en state-backend for hver stack uden en kommerciel licens. Semaphore UI bruger den backend, der er konfigureret til Terraform/OpenTofu-koden, og Pro tilbyder desuden en indbygget HTTP-state-backend med historik og administration i grænsefladen. At holde backenden i Semaphore UI placerer den fælles state ved siden af de jobs, der ændrer den, frem for at tilføje endnu en state-tjeneste.

Ingen af produkterne anvender som standard en tidligere gemt planfil. Gaia 2.4.0 viser planlægningsresultatet, men apply-kommandoen bruger ikke den gemte planfil. Semaphore UI’s standardeksekvering planlægger og anvender også separat. Hvis godkendelsen skal dække den præcist foreslåede ændring, kræver proceduren eksplicit lagring og genbrug af planen.

Inventar

Et patch- eller certifikatkontroljob kræver en gentagelig måde at vælge værter på. Ansible-inventarer tjener dette formål, mens Terraform-state beskriver de ressourcer, en stack administrerer.

UnderstøttetDelvist understøttetIkke understøttet
Inventar: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Genanvendelige Ansible-inventarer JaDefinitioner i grænsefladen eller filer i Git NejIngen inventarressource
Dynamisk discovery af værter JaAnsible-inventarplugins DelvistGenereret inventar eller Ansible kaldt fra Terraform

Gaia holder Terraform-ressourcer og output sammen med hver stack. Et Terraform-output kan give den værtsadresse, som en provisioner eller et andet system skal bruge, men opretter ikke en Ansible-inventarressource i Gaias grænseflade. Ansible kaldt gennem en provisioner skal modtage eller generere sit inventar som en del af automatiseringen.

Semaphore UI gemmer Ansible-inventarer som genanvendelige projektressourcer. Teams kan redigere en statisk definition, bruge en fil fra Git eller lade Ansible-inventarplugins finde værter, når et job kører. Samme inventar kan bruges til udrulning, patching og certifikatkontrol. Det er især nyttigt, når provisionering kun er begyndelsen på arbejdet, og operatørerne vender tilbage til en eksisterende serverflåde gennem hele dens levetid.

Afvikling

Eksekveringsindstillinger afgør, hvilken maskine der kan nå målene, og hvilke afhængigheder den leverer. Begge platforme kan køre i privat infrastruktur med forskellige muligheder for et job uden containere.

UnderstøttetDelvist understøttetIkke understøttet
Afvikling: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Jobs uden containere Ja NejTerraform-jobrunner kræver Docker eller Kubernetes
Ekstern afvikling JaRunners JaSeparat Gaia Runner
Jobkørsel i Docker JaPro Ja
Kubernetes-pods til opgaver JaEnterprise Ja

Gaia adskiller applikationen fra runneren. Runneren henter ventende Terraform-trin og kører dem i Docker-containere eller Kubernetes-pods med konfigurerbar samtidighed. Den kan køre tæt på privat infrastruktur, så længe den kan nå Gaia-API’et og de tjenester, modulet bruger. Det valgte image leverer Terraform og de ekstra programmer, som provisioners kræver.

Semaphore UI kan køre jobs på applikationsserveren eller på runners placeret tæt på målene. Det lader en lille installation begynde uden en containerplatform og en større installation nå separate netværk gennem runners. Pro tilføjer projektrunners og jobkørsel i Docker, mens Enterprise tilføjer Kubernetes-jobpods. Installation af webapplikationen i Docker og kørsel af hvert job i egen container er fortsat separate valg.

Planlægning

Planlægning er vigtig, når infrastrukturjobs skal køre på et bestemt tidspunkt eller gentages uden manuel start. Semaphore UI planlægger sine forberedte skabeloner direkte. Gaia kræver en ekstern planlægger til at koordinere Terraform-stackjobs. Semaphore UI’s bredere opgavemodel lader også samme planlægningsgrænseflade dække selvstændige backups, patching og certifikatkontroller.

UnderstøttetDelvist understøttetIkke understøttet
Planlægning: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Cron-tidsplaner Ja DelvistEkstern planlægger, der kalder job-API’et
Planlagte engangskørsler Ja DelvistEkstern planlægger, der kalder job-API’et

Semaphore UI gemmer cron- og engangstidsplaner på forberedte skabeloner. En natlig backup, en tilbagevendende certifikatkontrol eller et patchjob kan genbruge det inventar, de legitimationsoplysninger og startindstillinger, som forfatteren har valgt. Manuelle og planlagte kørsler vises derefter i samme eksekveringshistorik.

Gaia 2.4.0 indeholder ikke en planlægningsgrænseflade. En ekstern planlægger kan oprette et RUN- eller DESTROY-job gennem POST /api/stacks/{id}/{jobType} og derefter starte planen gennem POST /api/jobs/{jobId}/plan. Anvendelse af ændringen er et separat POST til /api/jobs/{jobId}/apply, når planen er færdig. En planlægger skal håndtere denne livscyklus og undersøge det endelige jobresultat i stedet for at betragte oprettelsen af et job-ID som en afsluttet kørsel.

Workflows

En komplet miljøprocedure kan provisionere infrastruktur, konfigurere værter og kontrollere en tjeneste. Gaia styrer plan/apply-faserne i et stackjob, mens Semaphore UI forbinder separate operationer og deres udfald.

UnderstøttetDelvist understøttetIkke understøttet
Workflows: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Visuelle workflows på tværs af værktøjer Ja NejIngen workfloweditor til flere værktøjer
Godkendelsestrin Ja DelvistBekræftelse mellem Terraform plan og apply
Overførsel af værdier mellem operationer Ja DelvistStackoutput via kode eller API-integration

Gaia fører en stack gennem planlægning og anvendelse. Grænsefladen tilbyder en separat bekræftelse efter planen, også ved fjernelse af en stack. Terraform-provisioners kan udføre yderligere handlinger i denne livscyklus, og et eksternt system kan koordinere flere jobs gennem API’et. Gaia tilbyder ikke en visuel graf over selvstændigt genanvendelige Ansible-, Terraform- og scriptoperationer.

Semaphore UI forbinder gemte skabeloner i et visuelt workflow med godkendelser og stier for succes og fejl. En udrulning kan provisionere infrastruktur, vente på godkendelse, konfigurere værter og køre en kontrol, mens hver skabelon forbliver tilgængelig til senere vedligeholdelse. Indsamlede værdier kan overføres mellem trin med den lokale executor på serveren eller en runner. Genererede filer og gemte Terraform-planer kræver stadig tilgængelig lagring eller en eksplicit overførsel. Ingen af produkterne anvender som standard en tidligere gemt Terraform-plan.

Adgangsstyring

At dele et provisioneringsmodul og delegere en forberedt servicegenstart kræver forskellige grænser. Adgangsindstillinger skal lade forfatteren forberede en operation og give kolleger de nødvendige rettigheder til at bruge den.

UnderstøttetDelvist understøttetIkke understøttet
Adgangsstyring: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Rollebaseret adgang JaProjektroller JaRoller og modulorganisationer
Custom roller JaEnterprise NejFaste applikationsroller
Eksternt login JaProLDAP og OIDC JaGitHub- og GitLab-OAuth2, LDAP

Gaia bruger organisationer til at dele moduler med administrator- og brugerroller. En modulforfatter kan gøre en godkendt Terraform-definition tilgængelig for et team, mens brugerne angiver konfigurationen til deres egne stacks. GitHub- og GitLab-integrationerne kombinerer OAuth2-login med import af repositories, og LDAP understøttes også.

Semaphore UI Community organiserer fælles automatisering i projekter. Projektroller styrer, hvem der kan se, køre eller redigere automatisering i projektet. Kolleger med eksekveringsrettigheder kan starte en udrulning, backup eller vedligeholdelsesopgave og gennemgå resultatet. Ingeniøren forbereder operationen, mens kollegaen bruger dens gemte konfiguration og startparametre.

Enterprise tilføjer brugerdefinerede roller og eksekveringsrettigheder på skabelonniveau, når adgangen skal begrænses til udvalgte operationer. Et team kan eksempelvis delegere en skabelon til servicegenstart uden at give operatøren generelle redigeringsrettigheder til projektet. Grænsen kommer fra kombinationen af rollerettigheder og operationskonfiguration, ikke kun surveyformularen. Pro tilføjer LDAP- og OIDC-login til teams med en central identitetsudbyder. Semaphore UI Pro tilføjer også TOTP-tofaktorgodkendelse til lokale konti.

Hemmeligheder

Legitimationsoplysninger til cloudprovisionering og SSH-legitimationsoplysninger til værtskonfiguration er separate ressourcer. En fælles tjeneste skal genbruge dem uden at bede operatøren indsætte en hemmelighed ved hver kørsel.

UnderstøttetDelvist understøttetIkke understøttet
Hemmeligheder: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Gemte legitimationsoplysninger JaSSH-nøgler og adgangskoder JaObjekter til cloud-legitimationsoplysninger
HashiCorp Vault JaProOpslag af hemmeligheder JaTransit-kryptering og dynamiske AWS-legitimationsoplysninger
Indbygget OpenBao-opslag JaPro Nej
Indbygget AWS Secrets Manager-opslag JaEnterprise Nej
Indbygget Azure Key Vault-opslag JaEnterprise Nej
Indbygget Devolutions Server-opslag JaEnterprise Nej
Indbygget CyberArk-opslag JaEnterprisePVWA REST API Nej

Gaia leverer cloud-legitimationsoplysninger til AWS, Google Cloud og Azure. Den valgfrie Vault-integration bruger Transit-motoren til kryptering og kan anmode om dynamiske AWS-legitimationsoplysninger fra en Vault-secrets-motor. Disse oplysninger understøtter Terraform-stackens livscyklus.

Semaphore UI’s Key Store understøtter legitimationsoplysninger på tværs af teamets procedurer, herunder SSH-nøgler og adgangskoder til Ansible-værter. En forberedt operation henviser til de gemte poster i stedet for at kræve, at operatøren indsætter legitimationsoplysninger ved hver start. Pro tilføjer opslag af hemmeligheder fra HashiCorp Vault og OpenBao, mens Enterprise tilføjer integrationer med AWS Secrets Manager, Azure Key Vault og Devolutions Server samt CyberArk gennem PVWA-API’et.

Et miljø kan eksempelvis bruge cloud-legitimationsoplysninger til provisionering og en SSH-nøgle til den efterfølgende Ansible-konfiguration. De forbliver separate legitimationsoplysninger knyttet til den relevante operation. Begge platforme kan arbejde med Vault, men Gaias kryptering og dynamiske legitimationsoplysninger er noget andet end opslag af en gemt hemmelighed til et job. Gaias indbyggede typer af legitimationsoplysninger omfatter ikke forbindelser til de øvrige secret-lagre nævnt ovenfor. Terraform-kode kan hente hemmeligheder gennem egne datakilder eller eksterne kommandoer, hvor opslaget konfigureres og vedligeholdes i automatiseringen frem for i Gaias grænseflade til legitimationsoplysninger.

Logning og revision

Efter et job er kørt, har operatørerne brug for resultatet og tilstrækkelig kontekst til at undersøge en fejl. Terraform-stackhistorik og Ansible-værtsresultater besvarer forskellige spørgsmål om samme miljø.

UnderstøttetDelvist understøttetIkke understøttet
Logning og revision: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
Eksekveringshistorik og logs Ja Ja
Kørslens ejer og tidsstempler Ja Ja
Indbygget Ansible-rapport over værter og opgaver JaPro NejTerraform-plan/apply-output
Grænseflade til administrativ audit JaLogin og registrerede handlinger NejJobhistorik, ingen grænseflade til administrativ audit

Gaia registrerer bruger, status, tidspunkter og plan/apply-trin for et stackjob. Historikken hjælper et team med at undersøge et miljøs provisioneringsændringer og Terraform-output. Det er en registrering af stackoperationer, ikke en grænseflade til Ansible-værtsrapportering eller administrativ audit.

Semaphore UI holder opgavehistorik på tværs af de understøttede værktøjer. Ansible-oversigter i Pro tilføjer værts- og opgaveresultater, så operatøren kan identificere servere, hvor en patch eller certifikatkontrol fejlede. Auditloggen registrerer login og understøttede administrative handlinger separat fra opgaveoutput. Et team, der både provisionerer og vedligeholder værter, kan derfor undersøge operationerne i samme tjeneste uden at betragte Terraform-state som en rapport over alle handlinger på en server. Pro tilføjer auditfiltrering og eksport, herunder levering via Syslog og Splunk HEC til teamets SIEM-pipeline.

Integrationer og AI-assisteret arbejde

En eksisterende pipeline eller tjeneste kan anmode om forberedt automatisering gennem et API. Repositoryintegrationer henter koden ind i tjenesten, mens en hændelsesstyret forbindelse også kræver en pålidelig måde at følge resultatet på.

UnderstøttetDelvist understøttetIkke understøttet
Integrationer og AI-assisteret arbejde: Gaia og Semaphore UI
Kriterier Semaphore UI Gaia
REST API Ja Ja
Git-repositories Ja JaModulimport fra GitHub og GitLab
Indgående automatiseringswebhooks JaMatchning af anmodninger og udtræk af input DelvistEkstern modtager, der kalder job-API’et

Gaia importerer moduler fra GitHub eller GitLab og tilbyder API’er til stacks, jobs og resultater. En CI-pipeline eller ekstern bestillingstjeneste kan oprette et stackjob, starte planlægning og afgøre, hvornår det skal anvendes. En webhookstyret opsætning kræver en adapter, der udfører kaldene og følger udfaldet. Semaphore UI tilbyder et REST-API og indgående integrationswebhooks, der matcher forespørgsler og mapper deres værdier til forberedte opgaveinput.

For et team, der beholder Gaias Terraform-katalog, kan en API-integration starte en Semaphore UI-skabelon til Ansible-konfiguration eller vedligeholdelse, når provisioneringen er færdig. Semaphore UI administrerer derefter operationens inventar, legitimationsoplysninger og eksekveringsregistrering. Det er en forbindelse, teamet implementerer, ikke en indbygget Gaia-til-Semaphore-integration. Begge projekter stiller også dokumentation og kildekode til rådighed, som en kodeassistent kan bruge ved udarbejdelse af forbindelsen eller undersøgelse af konfiguration og joboutput.

Licenser og support

Gaia og Semaphore UI har begge gratis open source-udgaver til egen hosting. Omfanget er forskelligt, allerede før betalte funktioner indgår i sammenligningen, fra et katalog med Terraform-moduler til en tjeneste for flere automatiseringsværktøjer. Kommercielle funktioner og support er en separat del af beslutningen.

Open source og kommercielle muligheder

Gaia er MPL-2.0-licenseret og inkluderer sin Terraform-stack-state-backend. Semaphore UI Community er MIT-licenseret og dækker skabeloner, workflows, tidsplaner, projektroller og eksekveringshistorik på tværs af de understøttede værktøjer. Pro tilføjer den indbyggede state-backend, projektrunners, opgavekørsel i Docker og integrationer med eksterne vaults. Enterprise tilføjer mere specifikke kontroller for adgang, eksekvering og tilgængelighed.

For et team, der har brug for både Terraform-provisionering og tilbagevendende Ansible-operationer, giver disse Community-funktioner allerede en fælles automatiseringstjeneste. Behovet for Pro eller Enterprise afhænger af kravene til state, adgang og eksekvering, ikke blot af, at der bruges flere værktøjer.

Vedligeholdelse og support

Gaias senest offentliggjorte udgivelse er 2.4.0 fra 12. august 2022, og applikationsrepositoryets main-branch pegede på samme commit ved kontrollen den 21. oktober 2026. Et team, der tager det i brug, skal vurdere de aktuelle afhængigheder og vedligeholde de ændringer, det har behov for.

Semaphore UI udgiver fortsat nye versioner og tilbyder leverandørsupport inden for samme produktfamilie. Community-hjælp ydes efter bedste evne, Pro inkluderer leverandørsupport i arbejdstiden, og Enterprise tilbyder tilpassede supportmuligheder. Et team kan begynde med fælles jobs i Community og få kommercielle funktioner eller support, efterhånden som driftskravene vokser.

Sådan vælger du

Tag udgangspunkt i, hvordan teamet vil bestille og administrere infrastruktur. Gaia organiserer provisionering omkring et modulkatalog og separate stackinstanser. Semaphore UI organiserer den omkring genanvendelige Terraform/OpenTofu-skabeloner, variabler og eksekveringsindstillinger med tidsplaner og workflows til den samlede procedure. Begge kan bruges til provisionering. Valget afhænger af driftsmodellen, og om samme grænseflade også skal understøtte anden automatisering.

Hvornår bør man vælge Gaia?

Gaia er et fokuseret valg, når behovet er at udgive godkendte Terraform-moduler og lade brugere oprette deres egne stackinstanser.

  • Separate stackinstanser er den centrale tjeneste. Hvert bestilt miljø har brug for egne input, legitimationsoplysninger, state og plan/apply/destroy-historik, mens konfigurationsstyring og vedligeholdelse håndteres andre steder.
  • Inkluderet state-lagring er vigtig. I ønsker modulkataloget og Terraform-state-backenden i ét open source-produkt, og teamet kan selv stå for vedligeholdelse af applikation og runner.

Hvornår bør du vælge Semaphore UI?

Vælg Semaphore UI, når I ønsker genanvendelige Terraform/OpenTofu-operationer med fleksibel eksekvering og mulighed for kommerciel support, eller når provisionering skal forbindes med Ansible, Bash, PowerShell og Python.

  • I ønsker valgmuligheder for installation og support. Begynd på en eksisterende server med en binærfil eller systempakke, tilføj fjernkørsel efter behov, og få Pro- eller Enterprise-funktioner og leverandørsupport inden for samme produktfamilie.
  • Ansible-arbejdet fortsætter efter provisioneringen. Samme tjeneste skal konfigurere værter og køre patching, certifikatkontroller eller backups med eksisterende inventarer, legitimationsoplysninger og playbooks.
  • Jeres IaC-kode definerer allerede de miljøer, I driver. Forbered Terraform/OpenTofu- eller Terragrunt-skabeloner med de nødvendige variabler, legitimationsoplysninger og state-konfiguration, og lad derefter kolleger køre eller planlægge operationerne. Det passer til et team, der ønsker fælles eksekvering af eksisterende konfigurationer uden at organisere tjenesten omkring et modulkatalog og separat bestilte stackinstanser.
  • Jeres procedure kombinerer flere værktøjer. Provisionering med Terraform/OpenTofu eller Terragrunt kan føre videre til Ansible-konfiguration, Bash- eller PowerShell-operationer og Python-kontroller gennem genanvendelige skabeloner og workflows.

Ofte stillede spørgsmål

Kan kolleger oprette separate miljøer ud fra én konfiguration?

Gaia udgiver et Terraform-modul én gang og lader brugerne oprette separate stacks med egne input, legitimationsoplysninger og state. Semaphore UI bruger skabeloner, surveyinput, variabelgrupper og Terraform/OpenTofu-workspaces. Når I forbereder en miljøbestilling i Semaphore UI, skal hvert miljø have den relevante workspace- og backend-state-konfiguration.

Hvilken state-backend bruger vi med Semaphore UI?

Semaphore UI kan beholde den backend, der allerede er konfigureret i jeres Terraform/OpenTofu-kode. Pro tilbyder desuden en indbygget HTTP-backend med historik og administration i grænsefladen. Gaia inkluderer sin stack-state-backend i open source-produktet. Når startgrænsefladen flyttes, skal forholdet mellem hvert miljø, dets konfiguration og dets state bevares.

Kan eksekveringen blive i et privat miljø?

Ja. Gaia Runner er adskilt fra webapplikationen og kører Terraform i Docker-containere eller Kubernetes-pods. Semaphore UI kører opgaver på sin server eller separate runners med valgfri Docker-kørsel pr. opgave i Pro og Kubernetes-kørsel i Enterprise. Eksekveringsmaskinen skal have adgang til målinfrastrukturen og de nødvendige tjenester.

Kan provisioneringen fortsætte med Ansible-konfiguration og vedligeholdelse?

Ja, i Semaphore UI. Et workflow kan forbinde Terraform/OpenTofu-provisionering, Ansible-konfiguration og en kontrolopgave. De enkelte skabeloner forbliver også tilgængelige til senere backups, opdateringer eller serviceoperationer, og tidsplaner kan gentage vedligeholdelsen. Gaias indbyggede livscyklus fokuserer på Terraform plan, apply og destroy, mens efterfølgende operationer håndteres gennem andre systemer.

Kan vi overføre et Gaia-modulkatalog direkte til Semaphore UI?

Den underliggende Terraform-kode kan genbruges, men Gaias modul- og stackkatalog er en anden model end Semaphore UI-skabeloner og workspaces. Knyt hvert miljøs input, referencer til legitimationsoplysninger, backend-state og eksekveringsafhængigheder til den forberedte operation.

Var denne artikel nyttig?

Kilder

  1. Gaia contributors, “Gaia v2.4.0 release”. URL: https://github.com/gaia-app/gaia/releases/tag/v2.4.0 (tilgået: ).
  2. Gaia, “Gaia concepts”. URL: https://docs.gaia-app.io/getting-started/concepts/ (tilgået: ).
  3. Gaia, “QuickStart”. URL: https://docs.gaia-app.io/getting-started/quick-start/ (tilgået: ).
  4. Gaia, “Gaia Runner configuration”. URL: https://docs.gaia-app.io/configuration/runner-configuration/ (tilgået: ).
  5. Gaia contributors, “Mozilla Public License 2.0”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/LICENSE (tilgået: ).
  6. Gaia contributors, “Gaia v2.4.0 source code”. URL: https://github.com/gaia-app/gaia/tree/v2.4.0 (tilgået: ).
  7. Gaia, “GitHub integration”. URL: https://docs.gaia-app.io/configuration/github-integration/ (tilgået: ).
  8. Gaia, “GitLab integration”. URL: https://docs.gaia-app.io/configuration/gitlab-integration/ (tilgået: ).
  9. Semaphore UI, “Installation”. URL: https://semaphoreui.com/docs/admin-guide/installation (tilgået: ).
  10. Semaphore UI, “Applications”. URL: https://semaphoreui.com/docs/user-guide/apps (tilgået: ).
  11. Semaphore UI, “Terraform/OpenTofu”. URL: https://semaphoreui.com/docs/user-guide/apps/terraform (tilgået: ).
  12. Semaphore UI, “Task Templates”. URL: https://semaphoreui.com/docs/user-guide/task-templates (tilgået: ).
  13. Semaphore UI, “Workflows”. URL: https://semaphoreui.com/docs/user-guide/workflows (tilgået: ).
  14. Semaphore UI, “Runners”. URL: https://semaphoreui.com/docs/admin-guide/runners (tilgået: ).
  15. Semaphore UI, “Semaphore UI editions”. URL: https://semaphoreui.com/pricing (tilgået: ).
  16. Semaphore UI, “Variable Groups”. URL: https://semaphoreui.com/docs/user-guide/environment (tilgået: ).
  17. Gaia, “Gaia interface example”. URL: https://github.com/gaia-app/gaia/blob/v2.4.0/README.md (tilgået: ).
  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 (tilgået: ).
  19. Semaphore UI, “Terraform execution implementation”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/db_lib/TerraformApp.go (tilgået: ).
  20. Semaphore UI, “Inventory”. URL: https://semaphoreui.com/docs/user-guide/inventory (tilgået: ).
  21. Semaphore UI, “Schedules”. URL: https://semaphoreui.com/docs/user-guide/schedules (tilgået: ).
  22. Semaphore UI, “Semaphore cron and one-time schedule execution”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/services/schedules/SchedulePool.go (tilgået: ).
  23. Semaphore UI, “Task history and output”. URL: https://semaphoreui.com/docs/user-guide/tasks (tilgået: ).
  24. Semaphore UI, “Team roles and extended RBAC”. URL: https://semaphoreui.com/docs/user-guide/team#extended-rbac (tilgået: ).
  25. Semaphore UI, “Key Store”. URL: https://semaphoreui.com/docs/user-guide/key-store (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  31. Semaphore UI, “CyberArk secret storage for Enterprise”. URL: https://semaphoreui.com/docs/user-guide/key-store/cyberark (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  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 (tilgået: ).
  38. HashiCorp, “Terraform provisioners and command execution”. URL: https://developer.hashicorp.com/terraform/language/provisioners (tilgået: ).
  39. Semaphore UI, “Audit log and external log forwarding”. URL: https://semaphoreui.com/docs/admin-guide/audit-log (tilgået: ).
  40. Semaphore UI, “Incoming integrations and webhooks”. URL: https://semaphoreui.com/docs/user-guide/integrations (tilgået: ).
  41. Semaphore UI, “Reusable Git repositories”. URL: https://semaphoreui.com/docs/user-guide/repositories (tilgået: ).
  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 (tilgået: ).

Sammenligning udarbejdet af Semaphore UI Team med dokumentationen, repositories og produktinformationen ovenfor. Besøgsdato er angivet for hver kilde.