Terraform arayüzü: Semaphore UI ve Gaia

Denis GukovSemaphore UI Kurucusu ve Teknoloji Direktörü
15 dk okuma

Gaia ve Semaphore UI, altyapı otomasyonu için web arayüzü sunar. Gaia, Terraform modülleri ve stack’lerden oluşan self servis katalog sağlar. Semaphore UI ise Terraform/OpenTofu’yu Ansible, Terragrunt, Bash, PowerShell ve Python ile birlikte çalıştırarak altyapı sağlamayı ve sonrasındaki işlemleri kapsar. Bu karşılaştırma Gaia 2.4.0 ve Semaphore UI 2.20.0 sürümlerini ele alır.

Bu makaleyi yapay zekâyla tartış

Genel bakış

Bir Terraform modülü ortam oluşturabilir ancak bu süreci paylaşmak apply çalıştırmaktan fazlasını gerektirir. Kullanıcılar doğru girdileri sağlamalı, uygun kimlik bilgilerini kullanmalı ve ortaya çıkan durum ile çıktıları bulabilmelidir. Ardından sunucular ve hizmetler yapılandırma, yedekleme, güncelleme ve başkalarının tekrarlayabileceği bir operasyon prosedürü gerektirir.

Gaia, altyapı sağlama bölümünü Terraform hizmet kataloğu olarak sunar. Yazarlar modülleri yayımlar, kullanıcılar ayrı yapılandırılmış stack’ler oluşturur ve işler kaynakları planlar, uygular veya kaldırır. Her stack, tek bir altyapı örneği için kendi değişkenlerini, kimlik bilgilerini, durumunu ve yürütme geçmişini tutar.

Semaphore UI, altyapı sağlamayı daha geniş bir otomasyon hizmetine taşır. Terraform/OpenTofu şablonları çalışma alanlarını, yeniden kullanılabilir değişkenleri ve başlatma formlarını kullanabilir. Ansible şablonları envanter ve host yapılandırmasını ekler. Bash, PowerShell, Python ve Terragrunt işlemleri aynı proje ve yürütme modelini kullanır. İş akışları adımları bağlar, zamanlamalar ise sonraki bakımı aynı arayüzde tutar.

Tek projede farklı otomasyon araçları için Semaphore UI görev şablonları.
Semaphore UI. Hazırlanmış Ansible, kod olarak altyapı ve komut satırı işlemleri projenin görev listesini paylaşır.
Girdi değişkenleri, Terraform işleri ve çıktıları içeren Gaia stack görünümü.
Gaia. Modül örneği, kendi girdileri, işleri ve state’i olan bir stack olarak yönetilir. Resmî dokümantasyon örneği. Kaynak

Kısa karşılaştırma

Her iki ürün de kullanıcıların kurulumu her dizüstü bilgisayarda yeniden oluşturmadan altyapı kodu çalıştırmasını sağlar. Temel fark, ortak hizmetin neleri yönettiğidir: Terraform modül kataloğundan altyapı sağlamaya, Ansible yapılandırmasına ve tekrarlanan operasyonlara kadar.

Gaia ve Semaphore UI: temel özellikler
Ölçütler Semaphore UI Gaia
Otomasyon araçları Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell, Python Terraform
Yeniden kullanılabilir birim Görev şablonları ve iş akışları Terraform modülleri ve bağımsız yapılandırılmış stack’ler
Kurulum İkili dosya, paketler, Docker, Kubernetes Java uygulaması, Docker Compose, Kubernetes
Çalışma zamanı bağımlılıkları Veritabanı, Git ve seçilen araçlar Java uygulaması, MongoDB ve Docker/Kubernetes runner’ı
Yürütme Sunucuda veya runner'larda Docker veya Kubernetes kullanan ayrı runner
Zamanlama Cron ifadeleri ve tek seferlik çalıştırmalar Plan/apply iş API’leri üzerinden harici zamanlayıcı
İş akışları Bağlantılı Ansible, IaC ve betik şablonları Terraform plan/apply aşamaları, harici orkestrasyon
Durum depolama Mevcut backend’ler veya Pro’da yerleşik HTTP backend’i Yerleşik stack durum backend’i
Girdiler Anket formları, yeniden kullanılabilir değişken grupları ve gizli bilgiler Modül değişkenleri, varsayılanlar ve doğrulama
Envanter Yeniden kullanılabilir Ansible tanımları ve keşif eklentileri Stack başına Terraform kaynakları ve çıktıları
Erişim denetimi Proje rolleri, Enterprise ile özel roller Yönetici ve kullanıcı rolleri, kuruluş bazlı modül erişimi
Kimlik bilgileri Key Store ve harici gizli bilgi depoları Bulut kimlik bilgileri, isteğe bağlı Vault entegrasyonu
Lisans MIT lisanslı Community, ticari Pro ve Enterprise MPL 2.0 lisanslı açık kaynak

Gaia, onaylanmış modülü ve ayrı stack örneklerini birlikte tutar. Yerleşik Terraform durum depolaması açık kaynak projeye dâhildir. Semaphore UI, işlemleri ekibin mevcut araç ve yapılandırmaları etrafında hazırlar. Böylece altyapı sağlama işi, ortamın ömrü boyunca kullanılan Ansible playbook’ları ve bakım işleriyle aynı arayüzü paylaşabilir.

Bu geniş kapsam her işin iş akışına dönüşmesini gerektirmez. Bir ekip arkadaşı hazırlanmış yedekleme veya hizmet yeniden başlatma işini bağımsız başlatabilir, mühendisler ise prosedür her ikisini gerektiriyorsa altyapı sağlamayı ve yapılandırmayı bağlar.

Özellik karşılaştırması

Yeniden kullanılabilir girdiler, envanterler ve kimlik bilgileri, ekip arkadaşlarının yapılandırmayı baştan oluşturmadan işlem çalıştırmasını sağlar. Yürütme ayarları işlemin nerede çalışacağını belirler. Zamanlamalar, iş akışları ve kayıtlı sonuçlar ise altyapı sağlamadan sonraki işleri destekler.

Kurulum ve yapılandırma

Ortak otomasyon hizmeti mevcut bir sunucuda veya konteyner platformunun parçası olarak çalışabilir. Uygulamanın dağıtımı ile iş çalışma ortamı ayrı tercihlerdir.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Kurulum ve yapılandırma: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Bağımsız yerel ikili dosya Evet HayırJava çalışma zamanı gerekir
Yerel Linux paketleri Evet HayırJava uygulaması dağıtımı
Docker dağıtımı Evet EvetDocker Compose hizmetleri
Kubernetes dağıtımı Evet Evet

Gaia, Java web uygulamasını, MongoDB veritabanını ve yürütme runner’ını birbirinden ayırır. Runner, yapılandırılabilir paralel iş sınırıyla Terraform’u Docker konteynerlerinde veya Kubernetes pod’larında başlatır. Docker Compose bu hizmetleri bir araya getirir, deneysel bir Helm chart ise Kubernetes kurulumu seçeneği sunar.

Semaphore UI, ikili dosya veya yerel paket olarak, Docker’da ya da Kubernetes’te çalışır. Günlük otomasyonu mühendislerin dizüstü bilgisayarlarından taşıyan bir ekip mevcut bir sunucuyla başlayabilir ve aynı hizmeti Terraform provizyonu ile Ansible bakımı için kullanabilir. İş konteynerlerinin gerekip gerekmediğini seçilen yürütme modu belirler.

Otomasyon araçları

Altyapı sağlama, host yapılandırma ve hizmet bakımı farklı araçlar kullanır. Doğrudan şablonlar ekibin bu prosedürleri bağımsız çalıştırmasını sağlarken Terraform provisioner’ları komutları kaynak yaşam döngüsüne bağlar.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Otomasyon araçları: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Terraform / OpenTofu Evet KısmenTerraform modülleri, OpenTofu şablonu yok
Ansible playbook dosyaları Evet KısmenAnsible çalışma ortamına sahip provisioner
Doğrudan Terragrunt işleri Evet HayırTerraform komut yaşam döngüsü
Bash Evet KısmenGerekli yorumlayıcıya sahip provisioner
PowerShell Evet KısmenGerekli yorumlayıcıya sahip provisioner
Python Evet KısmenGerekli yorumlayıcıya sahip provisioner
Bağımsız Ansible ve betik işlemleri Evet HayırRUN ve DESTROY stack işleri

Gaia, Terraform modüllerini oluşturulan bir Terraform komut dizisiyle çalıştırır. Runner imajı veya uzak hedef gerekli araçları sağlıyorsa Terraform provisioner’ları Ansible’ı veya komut satırı programlarını çağırabilir. Böylece yeni oluşturulan bir kaynak yapılandırılabilir, ancak komut bağımsız bir Gaia işlemine dönüşmez, Terraform çalıştırmasına bağlı kalır. Standart komut oluşturma biçimi ayrı bir OpenTofu veya Terragrunt şablonu sağlamaz.

Semaphore UI, Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell ve Python için doğrudan şablonlar sunar. Bir ekip OpenTofu ile altyapı oluşturabilir, Ansible ile paketleri yapılandırabilir ve Python ile hazır olma kontrolü çalıştırabilir. Daha sonra Ansible yapılandırması veya PowerShell bakım işlemi, yeni bir Terraform yaşam döngüsü başlatılmadan kendi başına çalışabilir. Pro’nun yerleşik state backend’i de Terraform/OpenTofu state’ini ve geçmişini bu işlerin yanında tutar.

İşlem kurulumu ve girdiler

Yazar, ekip arkadaşlarının tekrarlanabilir bir işlem talep edebilmesi için yapılandırmayı bir kez hazırlar. Gaia modülü ve stack örneklerini kaydeder. Semaphore UI ise altyapı sağlama ve bakım için yeniden kullanılabilen şablonları kaydeder.

DestekleniyorKısmen destekleniyorDesteklenmiyor
İşlem kurulumu ve girdiler: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Kaydedilmiş işlem yapılandırması EvetTask Templates EvetModüller ve stack’ler
Girdi formları Evet Evet
Değişken yapılandırması ve yeniden kullanım EvetŞablonlar arasında paylaşılan adlandırılmış gruplar EvetModül varsayılanları ve stack başına değerler
Girdi doğrulama EvetZorunlu alanlar, tam sayı kontrolleri ve seçenekler EvetZorunlu değerler ve düzenli ifadeler

Gaia’da modül yazarı kaynak depoyu, Terraform sürümünü ve değişken şemasını tanımlar. Kullanıcılar modülden stack’ler oluşturur, ortamlarına uygun değerleri ve bulut kimlik bilgisini sağlar. Stack, kendi state’i ve işleri olan kalıcı bir örneğe dönüşür. Bu model, birbirinden bağımsız istenen altyapıların kataloğuna uygundur. Gaia, zorunlu değerleri ve yapılandırılabilir düzenli ifadeleri doğrular. Semaphore UI’nin girdi formları zorunlu alanları, tam sayıları ve seçenekleri doğrular, ancak eşdeğer yapılandırılabilir bir regex kuralı sunmaz.

Semaphore UI, kaydedilmiş işlemi Task Template olarak adlandırır. Bu şablon, depoyu, araç yapılandırmasını, değişkenleri ve işlemin ihtiyaç duyduğu envanter veya kimlik bilgilerini bir araya getirir. Adlandırılmış Variable Groups, ortam ayarlarını şablonlar arasında yeniden kullanırken girdi formu alanları başlatma girdilerini toplar. Örneğin hizmet yeniden başlatma şablonu, ekip arkadaşından bir komut oluşturmasını istemek yerine hizmet ve ortam seçimi sunabilir. Provizyon şablonu da ortam parametreleri için aynı deseni kullanabilir.

Terraform yaşam döngüsü

Faydalı bir Terraform arayüzü komut başlatmaktan fazlasını yapmalıdır. Kod, girdiler, durum ve kullanıcıların talep etmesine izin verilen işlemler arasında tekrarlanabilir bir ilişki kurmalıdır.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Terraform yaşam döngüsü: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Terraform plan ve apply Evet Evet
Ayrı ortam örnekleri EvetHazırlanmış şablonlar ve çalışma alanı yapılandırması EvetModülden oluşturulan stack’ler
Ortama özel durum ve kimlik bilgileri EvetYapılandırılmış backend, çalışma alanı ve kimlik bilgileri EvetAyrı stack durumu ve bulut kimlik bilgileri
Ortamı kaldırma EvetTerraform/OpenTofu destroy işlemi EvetDestroy işi
Önceden kaydedilmiş planı varsayılan olarak uygulama Hayır Hayır
Yerleşik state depolama EvetPro Evet

Gaia, stack’in yapılandırılmış modülü, girdileri ve bulut kimlik bilgileri üzerinde plan, apply ve destroy çalıştırır. Yerleşik backend stack’in state’ini tutar, stack sayfası ise çıktıları ve iş geçmişini toplar. Böylece aynı modülden türeseler bile ayrı test ortamları bağımsız state ve yürütme kayıtlarını koruyabilir.

Semaphore UI, Terraform/OpenTofu deposunu, workspace’i ve yapılandırmayı seçmek için Task Template kullanır. Variable Groups ilgili işler arasında ayarları yeniden kullanır, girdi formları ise başlatma sırasında girdileri toplar. Bir mühendis ortam provizyonu işlemini bir kez hazırlayabilir, ardından ekip arkadaşları kaydedilmiş yapılandırma üzerinden bunu isteyebilir. Her ortamın kendi değişkenlerine, kimlik bilgilerine ve backend state’ine de ihtiyacı vardır. Gaia bunları ayrı stack örnekleri olarak temsil eder. Semaphore UI’de ekip karşılık gelen şablonu, workspace’i ve backend yapılandırmasını hazırlar. Workspace izolasyonu backend’e bağlıdır. Dolayısıyla yalnızca bir workspace seçmek her backend’de state’i ayırmaz. Terragrunt ve OpenTofu da Terraform’un yanında doğrudan şablon seçenekleridir.

Depo, workspace ve değişken gruplarını içeren Semaphore UI Terraform şablonu yapılandırması.
Semaphore UI. Terraform şablonu kaynak kodunu, workspace’i ve yeniden kullanılabilir değişkenleri hazırlanmış tek bir işlemde bir araya getirir.
Depo ayarlarını, yetkili ekipleri ve düzenlenebilir girdi değişkenlerini gösteren Gaia modül düzenleyicisi.
Gaia. Bir modül deposunu, yetkili ekiplerini ve girdi doğrulamasını tanımlar. Resmî proje örneği. Kaynak

State, bu kurulumun ayrı bir parçasıdır. Gaia, ticari lisans gerektirmeden her stack için state backend’i içerir. Semaphore UI, Terraform/OpenTofu kodunda yapılandırılan backend’i kullanır. Pro ayrıca geçmiş ve arayüz yönetimi sunan yerleşik bir HTTP state backend’i sağlar. Bu backend’i Semaphore UI’de tutmak, yeni bir state hizmeti eklemek yerine paylaşılan state’i onu değiştiren işlerin yanına yerleştirir.

İki ürün de varsayılan olarak önceden kaydedilmiş bir plan dosyasını uygulamaz. Gaia 2.4.0 planlama sonucunu gösterir, ancak apply komutu kaydedilmiş plan dosyasını kullanmaz. Semaphore UI’nin varsayılan yürütmesi de plan ve apply işlemlerini ayrı gerçekleştirir. Onayın tam olarak önerilen değişikliği kapsaması gerekiyorsa süreç, planın açıkça saklanmasını ve yeniden kullanılmasını gerektirir.

Envanter

Yama veya sertifika kontrolü işi, host seçimi için tekrarlanabilir bir yönteme ihtiyaç duyar. Ansible envanterleri bu amaca hizmet ederken Terraform durumu stack’in yönettiği kaynakları tanımlar.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Envanter: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Yeniden kullanılabilir Ansible envanterleri EvetArayüzde tanımlar veya Git’te dosyalar HayırEnvanter kaynağı yok
Dinamik host keşfi EvetAnsible envanter eklentileri KısmenOluşturulan envanter veya Terraform’dan çağrılan Ansible

Gaia, Terraform kaynaklarını ve çıktılarını her stack ile birlikte tutar. Bir Terraform çıktısı, provisioner’ın veya başka bir sistemin ihtiyaç duyduğu sunucu adresini sağlayabilir, ancak Gaia arayüzünde Ansible envanter kaynağı oluşturmaz. Provisioner üzerinden çağrılan Ansible’a envanteri bu otomasyonun parçası olarak iletmek veya oluşturmak gerekir.

Semaphore UI, Ansible envanterlerini yeniden kullanılabilir proje kaynakları olarak saklar. Ekipler statik bir tanımı düzenleyebilir, Git’teki bir dosyayı kullanabilir veya iş çalıştığında Ansible envanter eklentileriyle sunucuları keşfedebilir. Aynı envanter dağıtım, yama uygulama ve sertifika kontrollerinde kullanılabilir. Bu, provizyonun işin yalnızca başlangıcı olduğu ve operatörlerin mevcut sunucu filosuna yaşam döngüsü boyunca döndüğü durumlarda özellikle yararlıdır.

Yürütme

Yürütme ayarları, hedeflere hangi makinenin ulaşacağını ve hangi bağımlılıkları sağlayacağını belirler. Her iki platform da özel altyapı içinde çalışabilir ancak konteynersiz işler için farklı seçenekler sunar.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Yürütme: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Konteynersiz işler Evet HayırTerraform iş runner’ı Docker veya Kubernetes gerektirir
Uzak yürütme EvetRunner'lar EvetAyrı Gaia Runner
Docker’da iş yürütme EvetPro Evet
Kubernetes görev podları EvetEnterprise Evet

Gaia, uygulamayı runner’ından ayırır. Runner, bekleyen Terraform adımlarını ister ve yapılandırılabilir eşzamanlılıkla Docker konteynerlerinde veya Kubernetes pod’larında yürütür. Gaia API’sine ve modülün kullandığı hizmetlere erişebildiği sürece özel altyapının yakınında çalışabilir. Seçilen imaj Terraform’u ve provisioner’ların ihtiyaç duyduğu ek programları sağlar.

Semaphore UI, işleri uygulama sunucusunda veya hedeflerin yakınına yerleştirilmiş runner’larda çalıştırabilir. Böylece küçük bir kurulum konteyner platformu olmadan başlayabilir, daha büyük bir kurulum ise runner’larla ayrı ağlara erişebilir. Pro proje runner’larını ve Docker iş yürütmesini, Enterprise ise Kubernetes iş pod’larını ekler. Web uygulamasını Docker’a kurmak ile her işi kendi konteynerinde yürütmek ayrı tercihlerdir.

Zamanlama

Altyapı işleri belirli zamanda çalışmalı veya elle başlatılmadan tekrarlanmalıysa zamanlama önemlidir. Semaphore UI, hazırlanmış şablonlarını doğrudan zamanlar. Gaia, Terraform stack işlerini koordine etmek için harici zamanlayıcı gerektirir. Semaphore UI’nin daha geniş görev modeli, aynı zamanlama arayüzünün bağımsız yedeklemeleri, yama uygulamayı ve sertifika kontrollerini de kapsamasını sağlar.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Zamanlama: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Cron zamanlamaları Evet Kısmenİş API’sini çağıran harici zamanlayıcı
Tek seferlik zamanlanmış çalıştırmalar Evet Kısmenİş API’sini çağıran harici zamanlayıcı

Semaphore UI, hazırlanmış şablonlara cron ve tek seferlik zamanlamalar kaydeder. Gece yedeklemesi, tekrarlanan sertifika kontrolü veya yama işi, yazarın seçtiği envanteri, kimlik bilgilerini ve başlatma ayarlarını yeniden kullanabilir. Manuel ve zamanlanmış çalıştırmalar aynı yürütme geçmişinde görünür.

Gaia 2.4.0 bir zamanlama arayüzü içermez. Harici bir zamanlayıcı POST /api/stacks/{id}/{jobType} ile RUN veya DESTROY işi oluşturabilir, ardından POST /api/jobs/{jobId}/plan ile planını başlatabilir. Değişikliği uygulamak için plan tamamlandıktan sonra /api/jobs/{jobId}/apply adresine ayrı bir POST gerekir. Zamanlayıcı, iş kimliği oluşturmayı tamamlanmış bir çalıştırma saymak yerine bu yaşam döngüsünü yönetmeli ve işin nihai sonucunu kontrol etmelidir.

İş akışları

Eksiksiz ortam prosedürü altyapı sağlayabilir, host’ları yapılandırabilir ve hizmeti doğrulayabilir. Gaia, stack işinin plan/apply aşamalarını yönetirken Semaphore UI ayrı işlemleri ve sonuçlarını birbirine bağlar.

DestekleniyorKısmen destekleniyorDesteklenmiyor
İş akışları: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Araçlar arası görsel iş akışları Evet HayırBirden çok araca yönelik iş akışı düzenleyicisi yok
Onay adımları Evet KısmenTerraform plan ve apply arasında onay
İşlemler arasında değer aktarımı Evet KısmenKod veya API entegrasyonu aracılığıyla stack çıktıları

Gaia, stack’i planlama ve uygulama aşamalarından geçirir. Arayüzü, stack silme işlemi dâhil, plan sonrasında ayrı bir onay sunar. Terraform provisioner’ları bu yaşam döngüsü içinde ek işlemler yapabilir ve harici bir sistem API üzerinden birden fazla işi koordine edebilir. Gaia, bağımsız olarak yeniden kullanılabilir Ansible, Terraform ve betik işlemlerinden oluşan görsel bir grafik sağlamaz.

Semaphore UI, kaydedilmiş şablonları onay, başarı ve hata yolları içeren görsel bir iş akışıyla bağlar. Bir devreye alma süreci altyapı oluşturabilir, onay bekleyebilir, sunucuları yapılandırabilir ve doğrulama adımı çalıştırabilir. Her şablon sonraki bakım için de kullanılabilir kalır. Toplanan değerler, sunucudaki veya bir runner’daki yerel yürütücü kullanılarak adımlar arasında aktarılabilir. Oluşturulan dosyalar ve kaydedilmiş Terraform planları için yine erişilebilir depolama veya açık bir aktarım gerekir. İki ürün de varsayılan olarak önceden kaydedilmiş bir Terraform planını uygulamaz.

Erişim denetimi

Bir provizyon modülünü paylaşmak ile hazırlanmış bir hizmet yeniden başlatma işlemini devretmek farklı sınırlar gerektirir. Erişim ayarları, yazarın işlemi hazırlamasını ve ekip arkadaşlarına kullanmak için gereken izinleri vermesini sağlamalıdır.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Erişim denetimi: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Rol tabanlı erişim EvetProje rolleri EvetRoller ve modül organizasyonları
Özel roller EvetEnterprise HayırSabit uygulama rolleri
Harici oturum açma EvetProLDAP ve OIDC EvetGitHub ve GitLab OAuth2, LDAP

Gaia, modülleri paylaşmak için yönetici ve kullanıcı rolleri olan organizasyonlar kullanır. Modül yazarı onaylanmış bir Terraform tanımını ekibe sunabilir, kullanıcılar ise kendi stack’lerinin yapılandırmasını sağlar. GitHub ve GitLab entegrasyonları OAuth2 oturum açmayı depo içe aktarmayla birleştirir. LDAP de desteklenir.

Semaphore UI Community, paylaşılan otomasyonu projeler içinde düzenler. Proje rolleri, proje içindeki otomasyonu kimin görüntüleyebileceğini, çalıştırabileceğini veya düzenleyebileceğini belirler. Yürütme izni olan ekip arkadaşları dağıtım, yedekleme veya bakım işini başlatıp sonucunu inceleyebilir. Mühendis işlemi hazırlar, ekip arkadaşı ise kaydedilmiş yapılandırmayı ve başlatma girdilerini kullanır.

Erişimin seçili işlemlerle sınırlanması gerektiğinde Enterprise özel roller ve şablon düzeyinde yürütme izinleri ekler. Örneğin ekip, operatöre genel proje düzenleme hakkı vermeden hizmet yeniden başlatma şablonunu devredebilir. Bu sınır yalnızca girdi formundan değil, rol izinleri ile işlem yapılandırmasının birleşiminden doğar. Pro, merkezi kimlik sağlayıcı kullanan ekipler için LDAP ve OIDC oturum açmayı ekler. Semaphore UI Pro ayrıca yerel hesaplar için TOTP iki faktörlü kimlik doğrulama sağlar.

Gizli bilgiler

Bulut provizyonu kimlik bilgileri ile bir sunucuyu yapılandırmak için kullanılan SSH kimlik bilgileri ayrı kaynaklardır. Paylaşılan bir hizmet, operatörün her çalıştırmada gizli bilgi yapıştırmasını istemeden bunları yeniden kullanmalıdır.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Gizli bilgiler: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Saklanan kimlik bilgileri EvetSSH anahtarları ve parolalar EvetBulut kimlik bilgisi nesneleri
HashiCorp Vault EvetProGizli bilgi sorgulama EvetTransit şifreleme ve dinamik AWS kimlik bilgileri
Yerleşik OpenBao sorgulama EvetPro Hayır
Yerleşik AWS Secrets Manager sorgulama EvetEnterprise Hayır
Yerleşik Azure Key Vault sorgulama EvetEnterprise Hayır
Yerleşik Devolutions Server sorgulama EvetEnterprise Hayır
Yerleşik CyberArk sorgulama EvetEnterprisePVWA REST API Hayır

Gaia, AWS, Google Cloud ve Azure için bulut kimlik bilgileri sağlar. İsteğe bağlı Vault entegrasyonu şifreleme için Transit motorunu kullanır ve Vault secrets engine’den dinamik AWS kimlik bilgileri isteyebilir. Bu kimlik bilgileri Terraform stack yaşam döngüsünü destekler.

Semaphore UI’nin Key Store’u, Ansible sunucularının SSH anahtarları ve parolaları dâhil ekip prosedürlerinde kullanılan kimlik bilgilerini destekler. Hazırlanmış işlem, operatörün her başlatmada kimlik bilgisi yapıştırmasını istemek yerine saklanan kayıtlara başvurur. Pro, HashiCorp Vault ve OpenBao’dan gizli bilgi sorgulamayı ekler. Enterprise ise AWS Secrets Manager, Azure Key Vault ve Devolutions Server entegrasyonlarının yanı sıra PVWA API aracılığıyla CyberArk’ı ekler.

Örneğin bir ortam, provizyon için bulut kimlik bilgisi ve sonraki Ansible yapılandırması için SSH anahtarı kullanabilir. Bunlar ilgili işleme bağlı ayrı kimlik bilgileri olarak kalır. İki platform da Vault ile çalışabilir, ancak Gaia’nın şifreleme ve dinamik kimlik bilgisi özellikleri, bir iş için saklanan gizli bilgiyi sorgulamaktan farklıdır. Gaia’nın yerleşik kimlik bilgisi türleri yukarıdaki diğer gizli bilgi depoları için bağlayıcı içermez. Terraform kodu kendi veri kaynakları veya harici komutlarıyla gizli bilgileri alabilir. Bu sorgulama Gaia’nın kimlik bilgisi arayüzünde değil, otomasyonda yapılandırılır ve sürdürülür.

Günlükler ve denetim

Bir iş çalıştıktan sonra operatörler, sonucuna ve bir hatayı araştırmak için yeterli bağlama ihtiyaç duyar. Terraform stack geçmişi ile Ansible sunucu sonuçları, aynı ortam hakkında farklı sorulara yanıt verir.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Günlükler ve denetim: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
Yürütme geçmişi ve loglar Evet Evet
Çalıştıran kullanıcı ve zaman damgaları Evet Evet
Yerleşik Ansible sunucu/görev raporu EvetPro HayırTerraform plan/apply çıktısı
Yönetim denetimi arayüzü EvetOturum açmalar ve kaydedilen işlemler Hayırİş geçmişi, yönetim denetimi arayüzü yok

Gaia, stack işinin kullanıcısını, durumunu, zamanlamasını ve plan/apply adımlarını kaydeder. Bu geçmiş, ekibin ortam provizyonundaki değişiklikleri incelemesine ve Terraform çıktısını araştırmasına yardımcı olur. Bu, Ansible sunucu raporlama veya yönetim denetimi arayüzü değil, stack işlemleri kaydıdır.

Semaphore UI, desteklenen araçlar genelinde görev geçmişi tutar. Pro Ansible özetleri sunucu ve görev sonuçlarını ekleyerek hangi sunucuların yama veya sertifika kontrolünde başarısız olduğunu bulmaya yardımcı olur. Denetim günlüğü, oturum açmaları ve desteklenen yönetim işlemlerini görev çıktısından ayrı kaydeder. Böylece hem provizyon hem sunucu bakımı yapan ekip, Terraform state’ini sunucudaki her işlemin raporu saymadan bu işlemleri aynı hizmette araştırabilir. Pro, ekibin SIEM hattı için Syslog ve Splunk HEC iletimi dâhil denetim filtreleme ve dışa aktarmayı ekler.

Entegrasyonlar ve yapay zekâ destekli çalışma

Mevcut bir pipeline veya hizmet, API aracılığıyla hazırlanmış otomasyonu isteyebilir. Depo entegrasyonları kodu hizmete getirir, olaya dayalı bir bağlantı ise sonucu güvenilir biçimde takip edecek bir yönteme de ihtiyaç duyar.

DestekleniyorKısmen destekleniyorDesteklenmiyor
Entegrasyonlar ve yapay zekâ destekli çalışma: Gaia ve Semaphore UI
Ölçütler Semaphore UI Gaia
REST API Evet Evet
Git depoları Evet EvetGitHub ve GitLab modülü içe aktarma
Gelen otomasyon webhook’ları Evetİstek eşleştirme ve girdi çıkarma Kısmenİş API’sini çağıran harici alıcı

Gaia, GitHub veya GitLab’dan modülleri içe aktarır, stack’ler, işler ve sonuçları için API’ler sunar. Bir CI pipeline’ı veya harici istek hizmeti stack işi oluşturabilir, planlamayı başlatabilir ve ne zaman uygulanacağına karar verebilir. Webhook tabanlı kurulum, bu çağrıları yapan ve sonucu izleyen bir adaptör gerektirir. Semaphore UI, istekleri eşleştirip değerlerini hazırlanmış görev girdilerine aktaran REST API ve gelen entegrasyon webhook’ları sağlar.

Gaia’nın Terraform kataloğunu koruyan bir ekip için API entegrasyonu, provizyon tamamlandıktan sonra Semaphore UI Ansible yapılandırma veya bakım şablonunu tetikleyebilir. Ardından bu işlemin envanterini, kimlik bilgilerini ve yürütme kaydını Semaphore UI yönetir. Bu, yerleşik bir Gaia-Semaphore entegrasyonu değil, ekibin uyguladığı bir bağlantıdır. Her iki proje de bağlantıyı taslak hâline getirirken veya yapılandırma ve iş çıktısını araştırırken bir kodlama asistanının başvurabileceği belgeleri ve kaynak kodunu sunar.

Lisanslama ve destek

Gaia ve Semaphore UI’nin ücretsiz, kendi sunucunuzda barındırılan açık kaynak sürümleri vardır. Ücretli özellikler karşılaştırmaya girmeden önce bile kapsamları Terraform modül kataloğundan birden çok otomasyon aracına hizmet sunmaya kadar farklıdır. Ticari yetenekler ve destek, kararın ayrı bir parçasıdır.

Açık kaynak ve ticari seçenekler

Gaia, MPL-2.0 lisanslıdır ve Terraform stack state backend’ini içerir. Semaphore UI Community, MIT lisanslıdır ve desteklediği araçlar genelinde şablonları, iş akışlarını, zamanlamaları, proje rollerini ve yürütme geçmişini kapsar. Pro yerleşik state backend’ini, proje runner’larını, Docker görev yürütmesini ve harici kasa entegrasyonlarını ekler. Enterprise daha ayrıntılı erişim, yürütme ve kullanılabilirlik kontrolleri sağlar.

Hem Terraform provizyonuna hem tekrarlanan Ansible işlemlerine ihtiyaç duyan bir ekip için bu Community özellikleri zaten paylaşılan bir otomasyon hizmeti sağlar. Pro veya Enterprise gereksinimi yalnızca birden çok araç kullanılmasından değil, state, erişim ve yürütme gereksinimlerinden doğar.

Bakım ve destek

Gaia’nın yayımlanmış son sürümü 12 Ağustos 2022 tarihli 2.4.0’dır. 21 Ekim 2026’da yapılan kontrolde uygulama deposunun main dalı da aynı commit’i göstermektedir. Ürünü benimseyen ekibin güncel bağımlılıkları değerlendirmesi ve ihtiyaç duyduğu değişiklikleri sürdürmesi gerekir.

Semaphore UI sürüm yayımlamaya devam eder ve aynı ürün ailesinde üretici desteği sunar. Community yardımı mümkün olan ölçüde sağlanır, Pro mesai saatlerinde üretici desteği içerir, Enterprise ise ihtiyaca özel destek seçenekleri sunar. Ekip Community’de paylaşılan işlerle başlayabilir, operasyonel gereksinimleri arttıkça ticari özellik veya destek alabilir.

Nasıl seçmeli?

Ekibin altyapıyı nasıl istemek ve yönetmek istediğinden başlayın. Gaia provizyonu bir modül kataloğu ve ayrı stack örnekleri etrafında düzenler. Semaphore UI ise yeniden kullanılabilir Terraform/OpenTofu şablonları, değişkenler ve yürütme ayarları etrafında düzenler, daha geniş prosedür için zamanlamalar ve iş akışları sunar. İkisi de provizyon yapabilir. Tercih, işletim modeline ve aynı arayüzün başka otomasyonları da desteklemesi gerekip gerekmediğine bağlıdır.

Gaia ne zaman tercih edilmeli?

Gereksiniminiz onaylanmış Terraform modüllerini yayımlamak ve kullanıcıların kendi stack örneklerini oluşturmasını sağlamaksa Gaia odaklı bir seçenektir.

  • Temel hizmet ayrı stack örnekleridir. İstenen her ortamın kendi girdilerine, kimlik bilgilerine, state’ine ve plan/apply/destroy geçmişine ihtiyacı vardır, yapılandırma yönetimi ve bakım ise başka yerde yapılır.
  • Ürüne dâhil state depolaması önemlidir. Modül kataloğunu ve Terraform state backend’ini tek bir açık kaynak üründe istiyorsunuz, ekip de uygulamanın ve runner’ın bakımını üstlenebiliyor.

Semaphore UI ne zaman seçilmeli?

Esnek yürütme ve ticari destek seçenekleriyle yeniden kullanılabilir Terraform/OpenTofu işlemleri istiyorsanız veya provizyonun Ansible, Bash, PowerShell ve Python ile bağlanması gerekiyorsa Semaphore UI’yi seçin.

  • Dağıtım ve destek seçenekleri istiyorsunuz. Mevcut sunucuda ikili dosya veya yerel paketle başlayın, gerektiğinde uzak yürütme ekleyin ve aynı ürün ailesinde Pro ya da Enterprise özellikleriyle üretici desteği alın.
  • Ansible çalışmaları provizyondan sonra da sürüyor. Aynı hizmetin mevcut envanterleri, kimlik bilgilerini ve playbook’ları kullanarak sunucuları yapılandırması, yama uygulaması, sertifika kontrolü veya yedekleme yapması gerekiyor.
  • IaC kodunuz işlettiğiniz ortamları zaten tanımlıyor. Terraform/OpenTofu veya Terragrunt şablonlarını gereken değişkenler, kimlik bilgileri ve state yapılandırmasıyla hazırlayın, ardından ekip arkadaşlarının bu işlemleri çalıştırmasına veya zamanlamasına izin verin. Bu, hizmeti modül kataloğu ve ayrı ayrı istenen stack örnekleri etrafında düzenlemeden mevcut yapılandırmaları ortak çalıştırmak isteyen ekibe uygundur.
  • Prosedürünüz birden çok aracı birleştiriyor. Terraform/OpenTofu veya Terragrunt provizyonu, yeniden kullanılabilir şablonlar ve iş akışları üzerinden Ansible yapılandırmasına, Bash veya PowerShell işlemlerine ve Python kontrollerine bağlanabilir.

Sık sorulan sorular

Ekip arkadaşları tek yapılandırmadan ayrı ortamlar oluşturabilir mi?

Gaia, Terraform modülünü bir kez yayımlar ve kullanıcıların kendi girdileri, kimlik bilgileri ve state’i olan ayrı stack’ler oluşturmasını sağlar. Semaphore UI şablonlar, girdi formları, Variable Groups ve Terraform/OpenTofu workspace’leri kullanır. Semaphore UI’de ortam isteği hazırlarken her ortama uygun workspace ve backend state yapılandırmasını verin.

Semaphore UI ile hangi state backend’ini kullanırız?

Semaphore UI, Terraform/OpenTofu kodunuzda zaten yapılandırılan backend’i koruyabilir. Pro ayrıca geçmiş ve arayüz yönetimi olan yerleşik bir HTTP backend sağlar. Gaia, açık kaynak ürüne stack state backend’ini dâhil eder. Başlatma arayüzünü taşırken her ortam, yapılandırması ve state’i arasındaki ilişki korunmalıdır.

Yürütme özel bir ortamın içinde kalabilir mi?

Evet. Gaia Runner, web uygulamasından ayrıdır ve Terraform’u Docker konteynerlerinde veya Kubernetes pod’larında yürütür. Semaphore UI görevleri kendi sunucusunda veya ayrı runner’larda çalıştırır. Pro’da görev başına Docker, Enterprise’da Kubernetes yürütmesi seçilebilir. Yürütme makinesinin hedef altyapıya ve gerekli hizmetlere erişmesi gerekir.

Provizyon Ansible yapılandırması ve bakımıyla devam edebilir mi?

Semaphore UI’de evet. İş akışı Terraform/OpenTofu provizyonunu, Ansible yapılandırmasını ve doğrulama görevini bağlayabilir. Ayrı şablonlar sonraki yedekleme, güncelleme veya hizmet işlemleri için kullanılabilir kalır, zamanlamalar da bakımı tekrarlayabilir. Gaia’nın yerleşik yaşam döngüsü Terraform plan, apply ve destroy işlemlerine odaklanır, sonraki işlemler diğer sistemlerle yapılır.

Gaia modül kataloğunu doğrudan Semaphore UI’ye aktarabilir miyiz?

Alttaki Terraform kodu yeniden kullanılabilir, ancak Gaia’nın modül ve stack kataloğu Semaphore UI şablonları ve workspace’lerinden farklı bir modeldir. Her ortamın girdilerini, kimlik bilgisi referanslarını, backend state’ini ve yürütme bağımlılıklarını hazırlanmış işleme eşleyin.

Bu makale yararlı oldu mu?

Kaynaklar

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

Bu karşılaştırma yukarıda listelenen dokümantasyon, depolar ve ürün bilgileri kullanılarak Semaphore UI ekibi tarafından hazırlanmıştır. Her kaynak için erişim tarihi kaydedilmiştir.