0Pricing
Cloud & IT Cert Prep · Ders

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 Cloud & IT Cert Prep 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, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep 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 string

Bicep'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.id

Bicep 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.blobEndpoint

ARM ş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.bicep

Azure 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=prod

Bicep'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 json

Hı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 Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep 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. Cloud & IT Cert Prep 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.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, 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 Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep 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

  1. Azure Resource Manager Nasıl Çalışır?
  2. ARM Şablonları Yazma
  3. Bicep: Modern Azure IaC
  4. Azure'da Terraform
← Cloud & IT Cert Prep Sayfasına Dön