Bicep: Modern Azure IaC
ARM JSON üzerinde güçlü tür denetimi sağlayan bir soyutlama olan Bicep'in özlü söz dizimini öğrenin, mevcut bir ARM şablonunu Bicep'e dönüştürün ve Azure CLI ile dağıtın.
Bicep: Modern Azure IaC, CoddyKit'te ücretsiz bir Azure Fundamentals dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Azure Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Azure Fundamentals kursu toplamda 4 dersten oluşur.
Bicep Nedir ve Neden Kullanılır?
Bicep, Microsoft tarafından ARM JSON şablonlarına güçlü tür denetimine sahip ve daha özlü bir alternatif olarak geliştirilen, alana özgü bir dildir (DSL). Bicep, standart ARM JSON'a derlenir; bu nedenle aynı ARM dağıtım altyapısını kullanır ve ilk günden itibaren tüm Azure kaynak türlerini destekler. Bicep, ham JSON için gereken kalıplaşmış kodların çoğunu ortadan kaldırır ve daha iyi tür güvenliği ile IntelliSense desteği sağlar.
Bicep ve ARM JSON Söz Dizimi Karşılaştırması
Bir ARM şablonunda yaklaşık 25 JSON satırı gerektiren aynı depolama hesabı, Bicep'te yalnızca yaklaşık 8 satır gerektirir. Bicep, '$schema', contentVersion, resources dizi kapsayıcısını ve ayrıntılı ifade söz dizimini ortadan kaldırır. Bicep, ARM JSON üzerinde doğrudan bir soyutlama katmanı olduğundan özellik adları ve türleri aynı kalır; çalışma zamanında hiçbir fark yoktur.
// Bicep: deploy a storage account
param storageAccountName string
param location string = resourceGroup().location
param sku string = 'Standard_LRS'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: sku
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
minimumTlsVersion: 'TLS1_2'
}
}Bicep'te Parametreler ve Dekoratörler
Bicep parametreleri, özlü param name type = defaultValue söz dizimini kullanır. Bir parametrenin hemen üstüne @ ile başlayan dekoratörler ekleyerek @minLength(), @maxLength(), @allowed() ve @description() gibi kısıtlamalar uygulayabilirsiniz. @secure() dekoratörü, bir parametreyi hassas olarak işaretler ve ARM JSON'daki secureString ile aynı işleve sahiptir.
@description('Globally unique name for the storage account')
@minLength(3)
@maxLength(24)
param storageAccountName string
@allowed(['Standard_LRS', 'Standard_GRS', 'Premium_LRS'])
param sku string = 'Standard_LRS'
@secure()
param adminPassword stringBicep'te Değişkenler ve İfadeler
Bicep değişkenleri, var anahtar sözcüğüyle tanımlanır ve '${value}' söz dizimini kullanan dize yerleştirme de dâhil olmak üzere herhangi bir ifade içerebilir. Dize yerleştirme, ARM JSON'a kıyasla okunabilirliği artıran en önemli özelliklerden biridir; artık concat() işlevi çağrılarına gerek kalmaz. Bicep ayrıca üçlü işleç olan condition ? trueValue : falseValue ile koşullu ifadeleri destekler.
param environment string = 'dev'
param baseName string = 'myapp'
var uniqueSuffix = uniqueString(resourceGroup().id)
var storageAccountName = '${baseName}${environment}${uniqueSuffix}'
var isProd = environment == 'prod'
var skuName = isProd ? 'Standard_GRS' : 'Standard_LRS'Kaynak Bildirimleri ve Sembolik Adlar
Bicep'te her kaynağa, şablon içinde kaynağa başvurmak için kullanılan bir sembolik ad atanır. Sembolik ad, kaynağın Azure'daki adıyla aynı değildir. Kaynak özelliklerine erişmek ve bir kaynağa başka bir kaynağın içinden başvurarak örtük bağımlılıklar oluşturmak için sembolik adları kullanın; böylece açık bir dependsOn dizisine gerek kalmaz.
resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
name: 'myVNet'
location: location
properties: {
addressSpace: { addressPrefixes: ['10.0.0.0/16'] }
}
}
// Implicit dependency via symbolic name reference
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-05-01' = {
parent: vnet // Bicep knows to create vnet first
name: 'mySubnet'
properties: {
addressPrefix: '10.0.1.0/24'
}
}Bicep çıktıları
Bicep çıktıları, output anahtar sözcüğü ve ardından çıktı adı, türü ve değeri belirtilerek tanımlanır. Dağıtılmış bir kaynağın özelliklerine sembolik ad ve nokta gösterimini kullanarak başvurabilirsiniz; bu yöntem ARM'nin reference() işlevinden çok daha okunabilirdir. Çıktılar, Bicep modül çağrıları arasında değer aktarmak için gereklidir.
output storageAccountName string = storageAccount.name
output blobEndpoint string = storageAccount.properties.primaryEndpoints.blob
output storageAccountId string = storageAccount.idBicep modülleri
Bicep modülleri, ARM JSON'daki bağlantılı şablonların karşılığıdır ve altyapıyı yeniden kullanılabilir bileşenlere ayırmanıza olanak tanır. Modül, başka bir .bicep dosyasından ibarettir. Buna module anahtar sözcüğünü kullanarak başvurur, parametreleri aktarır ve çıktılarını kullanırsınız. Modüller, ekip genelinde yeniden kullanılmak üzere bir Azure Container Registry'ye yayımlanabilir ve buradan kullanılabilir.
// main.bicep — consuming a storage module
module storage './modules/storage.bicep' = {
name: 'storageDeploy'
params: {
storageAccountName: 'myuniquestorage'
location: location
sku: 'Standard_LRS'
}
}
// Reference module output in parent template
output blobUri string = storage.outputs.blobEndpointARM şablonlarını Bicep'e dönüştürme
Elinizde mevcut ARM JSON şablonları varsa Bicep CLI, bunları bicep decompile komutunu kullanarak Bicep'e dönüştürebilir. Sonuçta bazı elle temizlikler yapmanız gerekebilir; ancak bu işlem size mükemmel bir başlangıç noktası sağlar. Microsoft ayrıca aka.ms/bicepdemo adresinde, ARM JSON'u yapıştırıp eşdeğer Bicep kodunu gerçek zamanlı olarak görebileceğiniz çevrimiçi bir oyun alanı sunar.
# Install the Bicep CLI (or use it via Azure CLI)
az bicep install
az bicep upgrade
# Decompile existing ARM JSON to Bicep
az bicep decompile --file azuredeploy.json
# Produces azuredeploy.bicep in the same directory
# Compile Bicep to ARM JSON (for inspection)
az bicep build --file main.bicepAzure CLI ile Bicep dağıtma
Azure CLI, Bicep dosyalarını doğrudan destekler; dağıtımdan önce bunları ARM JSON'a elle derlemeniz gerekmez. --template-file bayrağıyla birlikte .bicep dosyasının yolunu az deployment group create komutuna aktarın; CLI dosyayı şeffaf biçimde derler. Aynı validate ve what-if alt komutları, Bicep dosyalarıyla ARM JSON'da olduğu gibi çalışır.
# Deploy a Bicep file directly
az deployment group create \
--resource-group MyRG \
--template-file main.bicep \
--parameters storageAccountName=myprodstore environment=prod
# What-if preview with Bicep
az deployment group what-if \
--resource-group MyRG \
--template-file main.bicep \
--parameters storageAccountName=myprodstore environment=prodBicep'te döngüler ve koşullar
Bicep, bir dizi parametresinden bir kaynağın birden çok örneğini oluşturmak için for ... in söz dizimini kullanan kaynak döngülerini destekler; böylece kopyala-yapıştır kaynaklı yinelemeler ortadan kalkar. if anahtar sözcüğü, koşullu kaynak dağıtımını etkinleştirir: bir kaynağı yalnızca belirli bir koşul doğru olduğunda dahil edebilirsiniz. Her iki özellik de sırasıyla ARM'nin copy ve condition yapılarına derlenir.
// Loop: create multiple storage accounts
param storageNames array = ['alpha', 'beta', 'gamma']
resource stores 'Microsoft.Storage/storageAccounts@2023-01-01' = [for name in storageNames: {
name: '${name}${uniqueString(resourceGroup().id)}'
location: location
sku: { name: 'Standard_LRS' }
kind: 'StorageV2'
}]
// Condition: only deploy in prod
param deployKeyVault bool = false
resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = if (deployKeyVault) {
name: 'myKeyVault'
location: location
properties: { sku: { family: 'A', name: 'standard' }, tenantId: subscription().tenantId, accessPolicies: [] }
}Bicep araçları ve lint denetimi
Visual Studio Code için Bicep uzantısı, yazarken zengin IntelliSense, tür denetimi ve satır içi hata vurgulama özellikleri sunar. Bicep CLI, kullanılmayan parametreler, eksik açıklamalar ve hatalı API sürümleri gibi en iyi uygulama ihlallerini denetleyen bir lint aracı içerir. Dağıtımdan önce sorunları yakalamak için CI işlem hattınızda az bicep lint --file main.bicep komutunu çalıştırın.
# Run the Bicep linter
az bicep lint --file main.bicep
# Format a Bicep file
az bicep format --file main.bicep
# Generate resource type documentation
az bicep generate-params --file main.bicep --output-format jsonHızlı kontrol
Bu derste ele alınan Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.
Ders özeti
Bu derste şunları öğrendiniz: Bicep, standart ARM şablonlarına derlenen, ARM JSON üzerinde güçlü tür denetimine sahip, özlü bir soyutlamadır; modüller ve döngüler yeniden kullanılabilir ve DRY altyapı kodu yazmanızı sağlar; Azure CLI, Bicep dosyalarını doğrudan dağıtır ve aynı validate/what-if/deploy iş akışını destekler. Sırada Azure üzerinde Terraform'u inceleyeceğiz.
Sıkça Sorulan Sorular
“Bicep: Modern Azure IaC” dersi ücretsiz mi?
Evet — “Bicep: Modern Azure IaC” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Azure Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Azure Fundamentals kursu toplamda 4 dersten oluşur.
“Bicep: Modern Azure IaC” dersinde ne öğreneceğim?
ARM JSON üzerinde güçlü tür denetimi sağlayan bir soyutlama olan Bicep'in özlü söz dizimini öğrenin, mevcut bir ARM şablonunu Bicep'e dönüştürün ve Azure CLI ile dağıtın. Azure Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Azure Fundamentals öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Azure Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Bicep: Modern Azure IaC” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Azure Fundamentals dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Azure Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Azure Resource Manager Nasıl Çalışır?
- ARM Şablonları Yazma
- Bicep: Modern Azure IaC
- Azure'da Terraform