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.tfstate
yerel 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.
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.
Günümüzün kuruluşları, çok fazla esneklik ve çeviklik gerektiren dinamik zorluklarla karşı karşıyadır. Genel bulut ortamları, özellikle kod olarak altyapı (IaC) aracılığıyla otomasyon aracılığıyla bu ihtiyaçları karşılar. Önde gelen iki IaC seçeneği Hashicorp Terraform ve Bicep'tir. Terraform, DevOps uzmanlarının bildirim temelli kod kullanarak şirket içi ve bulut hizmetlerini yönetmesine yardımcı olan açık kaynak bir araçtır. Microsoft Bicep, Azure kaynaklarının dağıtımını basitleştirmek için bildirim temelli söz dizimini kullanır.
Bu makalede, Terraform ile Bicep arasındaki benzerlikleri ve farkları belirlemek için çeşitli temel kullanıcı deneyimi özelliklerini karşılaştıracağız.
Dil söz dizimi
Bicep ve Terraform, kullanımı kolay ve geliştirici zamanından tasarruf eden etki alanına özgü dillerdir (DSL). Her iki araç da benzer anahtar sözcükler ve kavramlar içerir. Bu kavramlardan bazıları parametreleştirme, çok dosyalı projeler için destek ve dış modül desteğidir. Ancak Terraform, belirli görevler için daha zengin bir yerleşik işlevsellik kitaplığı sunar. İkisi arasında karar vermek tercih ve deneyim meselesidir. Aşağıda, kısa genel bakışlar ve her dil söz diziminin sunduğu kullanıcı dostu özelliklerden bazıları yer alır.
Bicep bildirim temelli bir dildir. Bu nedenle, öğelerin kodda tanımlanma sırası dağıtımın nasıl işlendiğini etkilemez. Bicep'in varsayılan hedef kapsamıdır resourceGroup
. Kullanıcılar, karmaşık ifadeleri kapsüllemek ve Bicep dosyalarını daha okunabilir hale getirmek için değişkenler kullanabilir. Modül kavramı, Bicep kodunun projeler veya ekipler arasında yeniden kullanılmasını sağlar.
Terraform ayrıca HashiCorp Yapılandırma Dili'ni (HCL) kullanan bildirim temelli bir dildir. HCL'nin birincil amacı kaynakları bildirmektir. Diğer dil özellikleri, kaynak tanımlamayı daha kullanışlı hale getirir. Bicep gibi Terraform yapılandırma dosyalarında da kod sıralaması önemli değildir.
Dil yardımcıları
Hem Bicep hem de Terraform, kodlama görevlerini basitleştirmek için dil yardımcıları sağlar. Her ikisi de kullanıcı dostu olduğundan, seçim büyük ölçüde tercihlere ve gereksinimlere bağlıdır.
Bicep, kodunuzu daha dinamik ve esnek hale getirmek için ifadeleri destekler. Bicep dosyasında farklı işlev türleri kullanılabilir. Bu işlev türlerinden bazıları mantıksal, sayısal ve itiraz işlevleridir. Döngüler bir kaynağın, modülün, özelliğin, değişkenin veya çıkışın birden çok kopyasını tanımlayabilir. Döngüler, Bicep dosyasında söz dizimlerinin yinelenmesinden kaçınmaya yardımcı olur.
Terraform, değerleri dönüştürmek ve birleştirmek için ifadelerin içinden çağrılan yerleşik işlevler de sunar. Bicep gibi Terraform ifadeleri de kaynaklar tarafından dışarı aktarılan verilere başvurular ve koşullu değerlendirme gibi karmaşık ifadeler içerebilir. Döngüler koleksiyonları işleyebilir ve kodu yinelemeye gerek kalmadan bir kaynağın birden çok örneğini oluşturabilir.
Modül
Hem Bicep hem de Terraform modül kavramını destekler. Modüller, kodunuzdan yeniden kullanılabilir bileşenler oluşturmanıza olanak sağlar. Modüller, altyapıyı ölçeklendirme ve yapılandırmayı temiz tutma konusunda önemli bir rol oynar. Modüller kaynak gruplarını kapsüllediğinden, benzer altyapı bileşenleri için geliştirilmesi gereken kod miktarını azaltır. Modüller Bicep ve Terraform'da benzer şekilde çalışsa da uygulamada farklılık gösterir.
Bicep'te modül, başka bir Bicep dosyasından dağıtılan bir Bicep dosyasıdır. Bicep modülleri, Bicep dosyalarının okunabilirliğini geliştirmeye hizmet eder. Bu modüller de ölçeklenebilir. Kullanıcılar, kod yinelemesini önlemek ve hataları azaltmak için modülleri ekipler arasında paylaşabilir. Bicep modülü tanımlama hakkında daha fazla bilgi için bkz . Bicep modülleri.
Terraform'da modüller, ekipler arasında kaynak yapılandırmalarını paketlemenin ve yeniden kullanmanın birincil aracıdır. Terraform modülleri, tek bir mantıksal birim olarak paketlenmiş birden çok kaynak için kapsayıcılardır. Modül, bir dizinde birlikte depolanan ve/veya .tf.json
dosya koleksiyonundan .tf
oluşur. Terraform, yerel dosya sistemindeki modüllere ek olarak çeşitli kaynaklardan modülleri de yükleyebilir. Bu kaynaklar kayıt defterini, yerel yolu, modülleri ve GitHub'ı içerir.
Sağlama yaşam döngüsü
Hem Terraform hem de Bicep, geliştiricilerin dağıtımdan önce bir yapılandırmayı doğrulamalarına ve ardından değişiklikleri uygulamalarına olanak tanır. Terraform, belirli bir yapılandırma tarafından yönetilen tüm uzak nesneleri yok etmek için daha fazla esneklik sağlar. Bu özellik, çalışmanız tamamlandıktan sonra geçici nesneleri temizlemek için kullanışlıdır. En iyi seçeneği seçerken tipik altyapı dağıtımlarının yaşam döngüsü gereksinimlerini göz önünde bulundurmak çok önemlidir.
Bicep, bicep dosyasını dağıtmadan önce değişiklikleri önizlemenize olanak tanıyan bir durum işlemi sunar. Azure Resource Manager işlemi sağlar ve mevcut kaynaklarda what-if
herhangi bir değişiklik yapmaz. Daha sonra kaynaklarınızı Azure'a dağıtmak için Bicep dosyalarınız ile Azure PowerShell veya Azure CLI kullanabilirsiniz. Azure PowerShell ve Azure CLI, uzak Bicep dosyalarının dağıtımını desteklemez. Ancak Bicep CLI kullanarak Bicep dosyanızı bir JSON şablonuna oluşturabilir ve ardından JSON dosyasını uzak bir konuma yükleyebilirsiniz.
Terraform'da terraform plan komutu, Bicep what-if
işlemine benzer. komutuyla terraform plan
, uygulamadan önce önizlemesi için bir yürütme planı oluşturursunuz. Ardından terraform apply komutu aracılığıyla yürütme planını uygularsınız . Terraform ile yaptığınız hemen her şey hem hem terraform apply
de komutlarını terraform plan
kullanmayı içerir.
Başlarken
Bicep ve Terraform, başlamanıza yardımcı olacak kaynaklar sunar. Bicep için Learn modülü, Azure kaynaklarınızın nasıl yapılandırılacağını tanımlamanıza yardımcı olur. Ayrıca size uygulamalı deneyim sunmak için çeşitli Azure kaynaklarının dağıtımları konusunda da rehberlik alırsınız.
Benzer şekilde, HashiCorp Learn de kullanıcılara Terraform'u nasıl yükleyip kullanacağınızı öğretmek için çeşitli Terraform eğitim kaynakları sağlar. Bu kaynaklar, Azure'da altyapı sağlamak için Terraform'un nasıl kullanılacağını gösteren bilgileri içerir.
Kod yazma
Kod yazma deneyimi, seçtiğiniz düzenleyici için kullanılabilen eklentilerin sayısına bağlıdır. Neyse ki hem Bicep hem de Terraform, kod yazma verimliliğini artırmak için kaynaklar sunar.
Bicep için en etkili eklentilerden biri Bicep Visual Studio Code uzantısıdır. Uzantı kod doğrulama, Intellisense, nokta özelliği erişimi ve özellik otomatik tamamlama gibi özellikler sağlar.
Terraform için Terraform Dil Sunucusu ile Terraform Visual Studio Code uzantısı, Bicep Visual Studio Code uzantısıyla aynı özelliklerin çoğunu sunar. Örneğin, uzantı söz dizimi vurgulama, IntelliSense, kod gezintisi ve modül gezginini de destekler. HashiCorp ayrıca Terraform Dil Sunucusu'nu yapılandırmak ve kullanmak için GitHub deposunda (https://github.com/hashicorp/terraform-ls/blob/main/docs/USAGE.md) [ayrıntılı yükleme yönergeleri] sunar.
Azure kapsamı
Azure kaynaklarını yapılandırma konusunda Bicep'in Terraform'a göre bir avantajı vardır. Bicep, Azure hizmetleriyle derinlemesine tümleşiktir. Ayrıca, yeni Azure özellikleri için anında destek sunar. Terraform, kullanıcıların Azure'ı yönetmesine olanak sağlayan iki sağlayıcı sağlar: AzureRM ve AzAPI. AzureRM sağlayıcısı, kararlı Azure hizmetleri için tamamen uyarlanmış bir deneyim sunar. Bazen bu özel deneyime gitmek biraz gecikmeye neden olabilir. AzAPI sağlayıcısı, Azure Resource Manager REST API'lerinin üzerinde ince bir katmandır ve Bicep gibi yeni Azure özellikleri için anında destek sağlar. Karar vermeden önce kuruluşunuzun altyapı gereksinimlerini ve bunların tam olarak desteklenip desteklenmediğini göz önünde bulundurmanız önemlidir.
Topluluk ve Destek
Topluluk, zorlukların öğrenilip üstesinden gelinmeye yardımcı olma konusunda önemli bir rol oynar. Hem Terraform hem de Bicep toplulukları yüksek düzeyde katılım ve destek sunar.
Yardım için gittiğiniz Bicep desteği, sorunun doğasına bağlıdır:
- Belge hataları: Microsoft Learn'deki Bicep belgeleriyle ilgili sorunlar için her makalenin bir Geri Bildirim bölümü vardır.
- Bicep kaynak kodu ve dosyalama hataları: Açık kaynak Bicep ürününe katkıda bulunmak ve hataları dosyalama amacıyla Microsoft Bicep GitHub deposunu ziyaret edin.
Terraform desteği için yardım için gittiğiniz yer sorunun doğasına bağlıdır:
Belge hataları: Microsoft Learn'deki Terraform belgeleriyle ilgili sorunlar için her makalenin bir Geri Bildirim bölümü vardır.
Sağlayıcı kaynak kodu ve dosyalama hataları: Microsoft'ta hataları dosyalayabileceğiniz ve açık kaynak Terraform Azure sağlayıcılarına katkıda bulunabileceğiniz GitHub depoları vardır. Kullanılabilir sağlayıcıları listelemek için Azure GitHub kuruluşuna gidin ve Depo bul... alanına girinterraform-provider-
.
Terraform temel soruları: HashiCorp topluluk portalının Terraform bölümünü ziyaret edin.
Terraform sağlayıcısıyla ilgili sorular: HashiCorp topluluk portalının Terraform Sağlayıcıları bölümünü ziyaret edin.
Özet
Bicep ve Terraform, Azure kaynaklarını yapılandırmayı ve dağıtmayı kolaylaştıran önde gelen iki IaC seçeneğidir. Her ikisi de kuruluşların verimliliği ve üretkenliği artırmaya yardımcı olan kullanıcı dostu özellikler sunar. Kuruluşunuz için en uygun durumu değerlendirirken altyapı gereksinimlerinizi ve tercihlerinizi dikkatle göz önünde bulundurun.