Alıştırma - Bicep şablonunuza parametre ve değişken ekleme
Bu alıştırmada, daha önce oluşturduğunuz Bicep şablonunu güncelleştirerek şunları yapacaksınız:
- Kaynak konumları ve adları için parametreleri kabul eder.
- Dağıtılan kaynaklar için doğru SKU'ları seçmek için iş kurallarınızı kullanır.
İşlem sırasında şunları yapacaksınız:
- Şablonu parametre içerecek şekilde
location
güncelleştirin. - Şablonu kaynak adları için parametreleri ve değişkenleri içerecek şekilde güncelleştirin.
- Parametreler için varsayılan değerleri ayarlamak için ifadeleri kullanın.
- Şablonu, her kaynağın SKU'su için değişkenleri içerecek şekilde güncelleştirin.
- Şablonun geçerli olduğundan emin olmak için dağıtımı test edin.
Konum ve kaynak adı parametrelerini ekleme
Visual Studio Code'daki main.bicep dosyasına dosyanın en üstüne aşağıdaki kodu ekleyin:
param location string = 'eastus' param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}' var appServicePlanName = 'toy-product-launch-plan'
Bicep linter, şablonda kullanılmadıklarını belirtmek için her parametrenin ve değişken adının altına sarı dalgalı çizgiler ekler. Bu sorunu yakında düzelteceksiniz.
Varsayılan parametre değerlerini tanımlamak için dize ilişkilendirmesi ve
uniqueString()
işlevi içeren ifadeler kullandığınıza dikkat edin. Bu şablonu dağıtan biri, dağıtım zamanındaki değerleri belirterek varsayılan parametre değerlerini geçersiz kılabilir, ancak değişken değerlerini geçersiz kılamaz.Ayrıca, Azure Uygulaması Hizmet planı adı için bir değişken kullandığınıza, ancak diğer adlar için parametreler kullandığınıza da dikkat edin. Depolama hesapların ve App Service uygulamalarının genel olarak benzersiz adlara ihtiyacı vardır, ancak App Service plan adlarının yalnızca kendi kaynak gruplarında benzersiz olması gerekir. Bu fark, dağıtımların tümü farklı kaynak gruplarına gittiği sürece farklı dağıtımlarda aynı App Service planı adını kullanmanın sorun olmadığı anlamına gelir.
Bahşiş
Parametresinin
location
olarak ayarlanmasıwestus3
gerektiğini belirtiyorsunuz. Normalde, özelliğini kullanarakresourceGroup().location
kaynak grubuyla aynı konumda kaynaklar oluşturursunuz. Ancak Microsoft Learn korumalı alanıyla çalışırken, kaynak grubunun konumuyla eşleşmeyen belirli Azure bölgelerini kullanmanız gerekir.kaynak tanımlarında ve
name
özelliklerinin ayarlandığılocation
yerleri bulun ve parametre değerlerini kullanacak şekilde güncelleştirin. İşiniz bittiğinde, Bicep dosyanızdaki kaynak tanımları şöyle görünmelidir:resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Dosyadaki değişiklikleri kaydedin.
Her ortam türü için SKU'ları otomatik olarak ayarlama
Visual Studio Code'daki main.bicep dosyasında, önceki görevde oluşturduğunuz parametrelerin altına aşağıdaki Bicep parametresini ekleyin:
@allowed([ 'nonprod' 'prod' ]) param environmentType string
İzin verilen değerler kümesine sahip bir parametre tanımladığınıza, ancak bu parametre için varsayılan değer belirtmediğinize dikkat edin.
Değişkeni bildiren satırın
appServicePlanName
altına aşağıdaki değişken tanımlarını ekleyin:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
Bazı mantığı ifade
if/then/else
etmek için üçüncül işlecini kullanarak bu değişken değerlerini ayarladığınıza dikkat edin.Kaynak tanımlarında özelliklerin ayarlandığı
sku
yerleri bulun ve parametre değerlerini kullanacak şekilde güncelleştirin. İşiniz bittiğinde, Bicep dosyanızdaki kaynak tanımları şöyle görünmelidir:resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Her şeyi parametreleştirmediğinize dikkat edin. Bu değerlerin dağıtımlar arasında değişmeyeceklerini bildiğiniz kaynak tanımlarında bazı özellikler ayarladınız.
Dosyadaki değişiklikleri kaydedin.
Bicep dosyanızı doğrulama
Önceki tüm değişiklikleri tamamladıktan sonra main.bicep dosyanız şu örnekteki gibi görünmelidir:
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Dosyanız eşleşmiyorsa örneği kopyalayın veya dosyanızı örnekle eşleşecek şekilde ayarlayın.
Güncelleştirilmiş Bicep şablonunu dağıtma
Terminalde aşağıdaki Azure CLI komutunu çalıştırın.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
Terminalde aşağıdaki Azure PowerShell komutunu çalıştırın.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
Dağıtımı yürütürken parametresinin environmentType
değerini açıkça belirttiğinize dikkat edin. Geçerli varsayılan değerlere sahip olduklarından diğer parametre değerlerini belirtmeniz gerekmez.
Dağıtımınızı denetleme
Tarayıcınızda Azure portalına geri dönün ve kaynak grubunuz gidin. Dağıtım ilk dağıtımla aynı adı kullandığından yine başarılı bir dağıtım görürsünüz.
1 Başarılı bağlantısını seçin.
Main adlı dağıtımı seçin ve ardından Dağıtılan kaynaklar listesini genişletmek için Dağıtım ayrıntıları'nı seçin.
Rastgele oluşturulan adlarla yeni bir App Service uygulaması ve depolama hesabının dağıtıldığına dikkat edin.