Azure Bicep ile Terraform: Azure'da Kod Olarak Altyapı İçin Hangisi?
Azure Bicep ile Terraform'u state, çok bulut desteği, Azure Policy ön kontrolü ve yeni özellik desteği açısından karşılaştırın; ortamınıza uygun aracı seçin.
İki aracın paylaştığı temel
Bicep ve Terraform bildirimsel kod olarak altyapı araçlarıdır: ne istediğinizi tanımlarsınız, aracın görevi mevcut durumu bu tanıma yaklaştırmaktır. Kodun yazılma sırası dağıtım sırasını belirlemez; bağımlılıklar kaynakların birbirine yaptığı başvurulardan çıkarılır. İkisi de parametre, değişken, döngü, koşul ve modül kavramlarına sahiptir; ikisi de Visual Studio Code eklentileriyle otomatik tamamlama ve doğrulama sunar, ikisi de GitHub Actions ve Azure Pipelines ile CI/CD hattına bağlanabilir.
Ayrışma, kapsamda başlar. Microsoft'un kendi karşılaştırma belgesinin ifadesiyle Terraform genel amaçlı bir araçtır, Bicep ise yalnızca Azure işleri için tasarlanmıştır ve başka bulut servisleriyle çalışacak şekilde kurgulanmamıştır. Seçimin özü bu cümleden türer.
Ölçüt ölçüt karşılaştırma
- Hedef ortam: Bicep yalnızca Azure kaynaklarını yönetir. / Terraform sağlayıcılar aracılığıyla Azure'un yanı sıra diğer bulutları, sanallaştırma ortamlarını, şirket içi sistemleri ve SaaS servislerini yönetir.
- State: Bicep state dosyası tutmaz; gerçek durumun kaynağı Azure Resource Manager'dır ve artımlı dağıtıma dayanır. / Terraform yönettiği altyapının state'ini tutar; varsayılan terraform.tfstate dosyası ekip çalışmasında uzak bir arka uca, örneğin bir Azure Storage hesabına taşınır ve yedeklenip korunması gerekir.
- İşlemenin yapıldığı yer: Bicep dosyası JSON biçimli bir ARM şablonuna derlenir ve işlem Azure tarafında yürütülür. / Terraform değişiklikleri istemci tarafında, state ile HCL'i karşılaştırarak hesaplar.
- Değişiklik önizleme: Bicep'te what-if işlemi, mevcut kaynaklara dokunmadan değişiklikleri gösterir. / Terraform'da terraform plan aynı işi görür, terraform apply ile uygulanır; terraform destroy ile bir yapılandırmanın yönettiği tüm nesneler kaldırılabilir.
- Yeni Azure özellikleri: Bicep yeni Azure özelliklerini anında destekler. / Terraform'da AzureRM sağlayıcısı kararlı servisler için özenli bir deneyim sunar ama bu bazen gecikmeyle gelir; AzAPI sağlayıcısı ise Resource Manager REST API'leri üzerinde ince bir katman olarak yeni özelliklere hızlı erişim sağlar.
- Kimlik doğrulama: Bicep dağıtımında tek bir yetkilendirme belirteci kullanılır ve ARM hem dağıtım hem kaynak yetkisini denetler. / Terraform her sağlayıcı için ayrı kimlik bilgileri kullanır ve tek yapılandırmada birden çok kimlik birleştirilebilir.
- Komut satırı: Bicep, Azure CLI içindeki az bicep ve az deployment komutlarıyla çalışır. / Terraform kendi CLI'ı ile doğrulama, biçimlendirme, plan ve apply adımlarını yürütür.
State farkı pratikte ne anlama gelir?
State tutmamak Bicep ekiplerine operasyonel bir sadelik verir: kilitlenen state dosyası, bozulmuş state ya da state'in kimde olduğu tartışması yoktur. Birisi portal üzerinden bir ayarı değiştirdiğinde bu, Microsoft'un deyişiyle bant dışı bir değişikliktir; Bicep bu değişikliği dağıtımı engelleyen bir sorun olarak görmez, ancak kodu güncellemezseniz bir sonraki dağıtım değişikliğin üzerine yazabilir.
Terraform'da aynı durumda değişiklik state ile çelişir. Ekip ya değişikliği state'e import eder ve HCL'i günceller ya da bir sonraki apply ile kodu geçerli kılar. Bu disiplin bir yük gibi görünse de, altyapının tek doğruluk kaynağının kod olmasını zorlar. Microsoft'un önerisi açıktır: bant dışı değişikliklerin sık olduğu ortamlarda Bicep daha rahat kullanılır; Terraform kullanıyorsanız bu değişiklikleri en aza indirin.
Örneğin bir operasyon ekibi acil bir durumda bir sanal makine ölçek kümesinin kapasitesini portaldan artırdıysa, Bicep'te sonraki dağıtım öncesinde parametre dosyası güncellenir; Terraform'da ise önce plan çıktısında bu sapma görülür ve karar verilir.
Azure Policy, portal ve landing zone tarafı
Bicep'in Azure ile bütünleşik olmasının somut faydaları vardır. Dağıtım öncesi ön kontrol (preflight) aşaması, bir kaynağın Azure Policy kuralına uymadığını dağıtım başlamadan yakalar. Terraform tarafında ise politika tarafından reddedilen bir kaynak, dağıtım sırasında hata verir.
Portal entegrasyonu da Bicep lehinedir: Azure portalından şablon dışa aktarılabilir ve bu şablon yeni dağıtımlar için başlangıç noktası olur. Terraform için Microsoft'un açık kaynak Azure Export for Terraform aracı, mevcut Azure kaynaklarını Terraform yönetimine almaya yardım eder. Landing zone kurulumu için Bicep portal deneyimi ve ARM şablonlarıyla, Terraform ise Cloud Adoption Framework'ün Terraform modülüyle desteklenir.
Hangi durumda hangisi?
Bicep'i seçmek için güçlü nedenler: • Altyapınızın tamamı Azure'da ve öngörülebilir gelecekte de orada kalacaksa • Ekip zaten ARM şablonlarıyla çalışıyorsa ve daha okunabilir bir dile geçmek istiyorsa • Yeni Azure özelliklerini çıktıkları gün kod olarak kullanmak önemliyse • State dosyası işletmek istemiyorsanız
Terraform'u seçmek için güçlü nedenler: • Azure'un yanında başka bir bulut, VMware gibi bir sanallaştırma ortamı ya da şirket içi sistemler de yönetilecekse • DNS sağlayıcısı, izleme aracı ya da kimlik servisi gibi Azure dışı servisler aynı kodla yönetilecekse • Kurumda zaten Terraform bilgisi, modül kütüphanesi ve CI/CD düzeni varsa • Bir yapılandırmanın oluşturduğu her şeyi tek komutla kaldırabilmek, geçici test ortamları için önemliyse
Karar verirken sık yapılan hata, bugünkü durumu değil yarınki stratejiyi hesaba katmamaktır. Azure'a özel bir başlangıç yapıp ileride başka bir buluta da açılan kurum, altyapı kodunu iki dilde tutmak zorunda kalabilir.
Bicep ve Terraform'u birlikte kullanmak
Bazı kurumlar iki aracı katmanlara ayırarak birlikte kullanır. Örneğin abonelik yapısı, yönetim grupları ve Azure Policy atamaları Azure'un yerel aracıyla Bicep üzerinden yönetilirken, uygulama ekipleri çok bulutlu iş yüklerini Terraform ile yönetebilir. Bu düzenin kuralı, her kaynağın tek bir aracın sahipliğinde olmasıdır; aynı kaynağı iki araçla yönetmek, birbirinin değişikliğini geri alan dağıtımlara yol açar.
Geçiş senaryosunda ise yaklaşım farklıdır. Bicep'ten Terraform'a geçen ekip, mevcut kaynakları import ile state'e almalıdır; Terraform'dan Bicep'e geçen ekip ise state'ten kaynakları kaldırırken Azure'daki gerçek kaynakları silmemeye dikkat etmelidir.
Bu araçları Mindset programlarında nerede çalışırsınız?
Azure Bicep ile Altyapı Tanımlama eğitimi, Bicep dil yapıları, modül yapısı ve yeniden kullanım, dağıtım kapsamları ile pipeline entegrasyonu başlıklarıyla Azure'a odaklanan bulut ve platform ekiplerine yöneliktir; bir kurumsal altyapı projesiyle kapanması, ekiplerin kendi abonelik düzenlerine uyarlayabileceği bir çerçeve sunar.
Terraform ile Altyapı Otomasyonu eğitimi durum yönetimi, modüler mimari ve çok bulutlu Terraform stratejisi başlıklarıyla Azure dışına da açılan ekipler için uygundur. Terraform'u birden çok ekip arasında yönetişimle işletmek isteyen platform sorumluları için Terraform Cloud ve Workspace Yönetişimi eğitimi, workspace organizasyonu ve erişim kontrolü gibi konuları ele alır.
İlgili Mindset programı
Azure Bicep ile Altyapı Tanımlama
Sık sorulan sorular
Bicep, ARM şablonlarının yerini mi alıyor?
Bicep, ARM şablonlarının üzerine kurulmuş daha okunabilir bir dildir; Bicep dosyası Bicep CLI ile JSON biçimli bir ARM şablonuna derlenir. Yani Azure tarafında çalışan motor aynıdır, değişen yazım deneyimidir. Mevcut ARM şablonlarını Bicep'e dönüştürmek mümkündür, dönüşen kodun yine de gözden geçirilmesi gerekir.
Terraform ile yeni bir Azure özelliğini hemen kullanabilir miyim?
AzureRM sağlayıcısında yeni bir özelliğin desteklenmesi bazen gecikebilir. Bu durumda AzAPI sağlayıcısı, Azure Resource Manager REST API'lerine doğrudan erişen ince bir katman olarak yeni özelliklere Bicep'e benzer biçimde hızlı erişim sağlar. Aynı yapılandırmada iki sağlayıcıyı birlikte kullanmak mümkündür.
Bicep'in state tutmaması bir dezavantaj mı?
Duruma göre değişir. State olmaması işletimi sadeleştirir ve state bozulması riskini ortadan kaldırır. Öte yandan Terraform'un state'i, kodda bulunmayan bir kaynağın neden yönetildiğini ya da silinmesi gerektiğini izlemeyi kolaylaştırır. Bicep tarafında benzer ihtiyaçlar için Azure'un dağıtım geçmişine ve dağıtım yönetimi özelliklerine bakmak gerekir.
Azure sertifikasına hazırlanan biri hangisini öğrenmeli?
Azure odaklı bir kariyer hedefleniyorsa Bicep, Azure Resource Manager mantığını doğrudan öğrettiği için iyi bir başlangıçtır. Çok bulutlu ortamlarda çalışmayı hedefleyen biri için Terraform daha taşınabilir bir beceridir. Sınav kapsamları değişebildiği için ilgili sınavın güncel beceri listesini Microsoft Learn sayfasından kontrol etmek gerekir.
İlgili rehberler
İlgili eğitimler
Kategori: DevOps ve Bulut Teknolojileri