Alıştırma - Bicep şablonunuza parametre ve değişken ekleme

Tamamlandı

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

  1. 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ı westus3gerektiğini belirtiyorsunuz. Normalde, özelliğini kullanarak resourceGroup().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.

  2. 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
      }
    }
    
  3. Dosyadaki değişiklikleri kaydedin.

Her ortam türü için SKU'ları otomatik olarak ayarlama

  1. 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.

  2. 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.

  3. 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.

  4. 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

  1. 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.

  2. 1 Başarılı bağlantısını seçin.

  3. 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.

    Screenshot of the Azure portal interface for the specific deployment, with storage account and App Service resources listed with generated names.

  4. Rastgele oluşturulan adlarla yeni bir App Service uygulaması ve depolama hesabının dağıtıldığına dikkat edin.