Aracılığıyla paylaş


Terraform ve Bicep karşılaştırması

DevOps ekipleri, ölçeklendirmeye ulaşmak için her zaman güvenilir ve yinelenebilir bir işlemle kodu hızla dağıtmanın yollarını arar. Bulut ve altyapı söz konusu olduğunda, bu işlem kod olarak altyapı (IaC) ile giderek daha fazla gerçekleştirilir. IaC araçları, genel amaçlı araçlardan belirli ortamlara yönelik araçlara kadar çeşitlilik gösterir. Terraform, eskisine örnek olarak gösterilirken Bicep, Azure ile ilgili görevleri işlemek için tasarlanmıştır.

Bu makalede Bicep ve Terraform'un dokuz altyapı ve tümleştirme özelliğini karşılaştıracağız. Bu farkları anlamak, altyapınızı ve süreçlerinizi en iyi destekleyen aracı belirlemenize yardımcı olur.

Durum ve arka uç

Hem Terraform hem de Bicep, BT ve geliştirme altyapısını kod olarak yönetmeyi kolaylaştıran istenen durum yapılandırmasıdır (DSC). Terraform, yönetilen altyapınız ve yapılandırmanız hakkındaki durumu depolar. Terraform, gerçek dünya kaynaklarını yapılandırmanıza eşlemek, meta verileri izlemek ve daha büyük altyapıların performansını geliştirmek için bu bilgileri kullanır. Durum adlı terraform.tfstateyerel bir dosyada depolanır, ancak uzaktan da depolanabilir. Durum dosyalarınızı yedeklemek ve güvenliğini sağlamak çok önemlidir. Terraform gibi Bicep de bildirim temelli ve hedef arayışındadır. Ancak, Bicep durumu depolamaz. Bunun yerine, Bicep artımlı dağıtıma dayanır.

Altyapı hedefleri

Bulut altyapısını yönetmek için Bicep ile Terraform karşılaştırması yaparken hedef bulut ortamınızı göz önünde bulundurmanız önemlidir:

  • Yalnızca Azure
  • Çoklu veya hibrit bulutlar

Bicep, Azure'a özgüdür ve diğer bulut hizmetleriyle çalışacak şekilde tasarlanmamıştır.

Hedefiniz aşağıdaki ortamlardan herhangi birine yapılan dağıtımları otomatikleştirmekse Terraform büyük olasılıkla daha iyi bir seçenektir:

  • Sanallaştırma ortamları
  • Azure ve diğer bulutlar gibi çoklu bulut senaryoları
  • Şirket içi iş yükleri

Terraform, sağlayıcı adı verilen eklentileri kullanarak diğer bulut sağlayıcıları veya API'lerle etkileşim kurar. Azure altyapısının yönetimini sağlayan çeşitli Terraform Azure sağlayıcıları vardır. Terraform yapılandırması kodlarken, kullanmakta olduğunuz gerekli sağlayıcıları belirtirsiniz. terraform init komutunu çalıştırdığınızda, belirtilen sağlayıcı yüklenir ve kodunuzdan kullanılabilir.

CLI araçları

Komut Satırı Arabirimi (CLI) araçları, otomasyon teknolojisinin uygulanması ve yönetimi aracılığıyla düzenlemede önemli bir rol oynar. Hem Bicep hem de Terraform, CLI araçları sunar.

Bicep, Azure CLI ile tümleştirerek geliştiricilerin aşağıdaki gibi komutları kullanmasına az olanak sağlar:

  • az bicep: az bicep komutları, Bicep'i yükleme ve Bicep dosyalarını oluşturma ve yayımlama gibi görevleri gerçekleştirmenize olanak sağlar.
  • az deployment: Kaynakları Bicep ve Azure CLI ile dağıtma makalesinde, kaynaklarınızı Azure'a dağıtmak için Bicep dosyalarıyla Azure CLI'nin nasıl kullanılacağı açıklanmaktadır.

Terraform CLI, Terraform kodunuzu doğrulama ve biçimlendirme ve yürütme planı oluşturup uygulama gibi görevleri gerçekleştirmenizi sağlar.

Bicep ayrıca Bicep'i Azure Pipelines ile tümleştirmeyi kolaylaştıran bir özellik de sunar. Terraform için de benzer bir özellik vardır ancak Visual Studio için Azure Pipelines Terraform Görevleri uzantısını indirip yüklemeniz gerekir. Yüklendikten sonra Azure Pipelines'dan Terraform CLI komutlarını çalıştırabilirsiniz. Ayrıca hem Terraform hem de Bicep, yazılım derlemelerini, testlerini ve dağıtımlarını otomatikleştirmek için GitHub Actions'ı destekler.

İşleme

Dağıtımların verimliliği ve iyileştirmeleri açısından Bicep ile Terraform arasında bazı önemli farklılıklar vardır. Bicep ile işleme, temel Azure altyapı hizmeti tarafında gerçekleşir. Bu özellik, ilkeyi denetlemek için denetim öncesi işleme veya bir bölgeye birden çok örnek dağıtmak için kullanılabilirlik gibi avantajlar sunar. Terraform ile işleme Terraform istemcisi içinde gerçekleştirilir. Bu nedenle, gerekli değişiklikleri belirlemek için durum ve HCL (HashiCorp Dili) kullandığından, ön işleme Azure'a çağrı gerektirmez.

Kimlik Doğrulaması

Azure kimlik doğrulaması özellikleri Bicep ile Terraform arasında farklılık gösterir. Bicep ile, bicep dosyası ve ARM Şablonu gönderme isteği sırasında bir yetkilendirme belirteci sağlanır. ARM, hem dağıtımı oluşturma hem de belirtilen şablon içindeki kaynakları dağıtma izninizin olmasını sağlar. Terraform, Azure CLI, hizmet sorumlusu veya Azure kaynakları için yönetilen kimlikler gibi sağlayıcı kimlik bilgilerine göre her API'nin kimliğini doğrular. Ayrıca, tek bir yapılandırmada birden çok sağlayıcı kimlik bilgisi kullanılabilir.

Azure tümleştirmeleri

ayrıca Azure İlkesi gibi Azure özelliklerini kullanımınızı ve her birinin diğer araçlarla ve dillerle nasıl etkileşim kurabileceğinizi de göz önünde bulundurmalısınız. Bicep'in denetim öncesi doğrulaması, bir kaynağın dağıtımdan önce başarısız olması için ilkeyle uyumlu olup olmadığını belirler. Böylece geliştiriciler sağlanan ARM şablonlarını kullanarak ilkeyle kaynakları düzeltebilir. ARM şablonu, otomatik düzeltme için başka bir kaynağa ilke ataması oluşturmak için kullanılabilir. Ancak terraform, ilke nedeniyle izin verilmeyen bir kaynak dağıtıldığında başarısız olur.

Portal tümleştirmesi

Bicep'in Terraform'a kıyasla en önemli avantajlarından biri, portal eylemlerini otomatik hale getirmektir. Bicep ile Azure portalını kullanarak şablonları dışarı aktarabilirsiniz. Şablonu dışarı aktarmak, kaynaklarınızı dağıtan söz dizimini ve özellikleri anlamanıza yardımcı olur. Dışarı aktarılan şablonla başlayıp gereksinimlerinizi karşılayacak şekilde değiştirerek gelecekteki dağıtımları otomatikleştirebilirsiniz. Terraform şablonları desteklenene kadar, dışarı aktarılan şablonu el ile çevirmeniz gerekir.

Terraform, Bicep ile aynı portal tümleştirmelerini sağlamasa da mevcut Azure altyapısı Terraform için Azure Export kullanılarak Terraform yönetimi altına alınabilir. (Terraform için Azure Export, Azure/aztfexport GitHub deposu.)

Bant dışı değişiklikler

Bant dışı yapılandırma değişiklikleri, bir cihaz yapılandırmasında aracın bağlamı dışında yapılan değişikliklerdir. Örneğin, Bicep veya Terraform kullanarak bir Sanal Makine Ölçek Kümesi dağıttığınızı varsayalım. Portalı kullanarak bu Sanal Makine Ölçek Kümesini değiştirirseniz, değişiklik "bant dışı" olur ve IaC aracınızda bilinmez.

Bicep kullanıyorsanız, bu değişikliklerin bir sonraki dağıtımda üzerine yazılmasını önlemek için bant dışı değişikliklerin Bicep ve ARM Şablonu koduyla mutabık kılınması gerekir. Bu değişiklikler dağıtımı engellemez.

Terraform kullanıyorsanız bant dışı değişiklikleri Terraform durumuna içeri aktarmanız ve HCL'yi güncelleştirmeniz gerekir.

Bu nedenle, bir ortam sık sık bant dışı değişiklikler içeriyorsa Bicep daha kullanıcı dostudur. Terraform kullanırken bant dışı değişiklikleri en aza indirmeniz gerekir.

Bulut çerçeveleri

Bulut Benimseme Çerçevesi (CAF), bulut yolculuğunuz boyunca bulut benimsemeyi hızlandırmaya yönelik belgelerden, en iyi uygulamalardan ve araçlardan oluşan bir koleksiyondur. Azure, giriş bölgelerini dağıtmak için yerel hizmetler sağlar. Bicep, ARM şablonlarını ve giriş bölgesi uygulamasını temel alan bir portal deneyimiyle bu süreci basitleştirir. Terraform, Azure ile dağıtmak, yönetmek ve kullanıma hazır hale getirmek için Kurumsal Ölçekli Giriş Bölgeleri modülünü kullanır.

Özet

Bicep ve Terraform birçok kullanıcı dostu altyapı ve tümleştirme özelliği sunar. Bu özellikler otomasyon teknolojisinin uygulanmasını ve yönetilmesini kolaylaştırır. Ortamınız için en uygun olanı belirlerken, birden fazla buluta dağıtım yapıp yapmadığınız veya altyapınızın çok bulutlu veya hibrit bulut ortamından mı oluştuğuna dikkat etmeniz önemlidir. Ayrıca, kuruluşunuz için en iyi seçimi yapmak için bu makalede açıklanan dokuz özelliği de göz önünde bulundurmayı unutmayın.