Alıştırma - Kaynakları koşullu olarak dağıtma

Tamamlandı

Not

Korumalı alanı ilk kez etkinleştirdiğinizde ve koşulları kabul edişinizde, Microsoft hesabınız Microsoft Learn Korumalı Alanı adlı yeni bir Azure diziniyle ilişkilendirilir. Ayrıca Concierge Aboneliği adlı özel bir aboneliğe de eklenirsiniz.

Oyuncak şirketinizin kaynaklarını çeşitli ortamlara dağıtmanız ve her ortama dağıtılanları denetlemek için parametreleri ve koşulları kullanmak istiyorsunuz.

Bu alıştırmada bir Azure SQL mantıksal sunucusu ve veritabanı oluşturacaksınız. Ardından denetimin etkinleştirildiğinden emin olmak için denetim ayarları ekleyeceksiniz, ancak yalnızca üretim ortamına dağıtım yaparken etkinleştirilmesini istiyorsunuz. Denetim amacıyla, yalnızca üretim ortamına kaynak dağıtırken dağıtabileceğiniz bir depolama hesabınız olması gerekir.

İşlem sırasında şunları yapacaksınız:

  • Veritabanıyla mantıksal sunucu tanımlayan bir Bicep dosyası oluşturun.
  • Her biri bir koşulla dağıtılan bir depolama hesabı ve SQL denetim ayarları ekleyin.
  • Geliştirme ortamınız için bir altyapı ayarlayın ve ardından sonucu doğrulayın.
  • Altyapınızı üretim ortamınıza yeniden dağıtın ve değişikliklere bakın.

Bu alıştırmada Visual Studio Code için Bicep uzantısı kullanılır. Visual Studio Code’da bu uzantıyı yüklediğinizden emin olun.

Mantıksal sunucu ve veritabanı ile Bicep şablonu oluşturma

  1. Visual Studio Code'u açın.

  2. main.bicep adlı yeni bir dosya oluşturun.

  3. Visual Studio Code'un Bicep araçlarını yükleyebilmesi için boş dosyayı kaydedin.

    Dosya>Farklı Kaydet'iveya Windows'ta Ctrl+S (macOS'ta⌘+S) seçeneğini belirleyebilirsiniz. Dosyayı nereye kaydettiğinizi unutmayın. Örneğin, bunu kaydetmek için bir templates klasörü oluşturmak isteyebilirsiniz.

  4. Mantıksal sunucu ve veritabanı tanımlamak için dosyaya aşağıdaki içeriği ve bu kaynakların ihtiyaç duyduğu parametreleri ve değişkenleri ekleyin. Aracın Bicep dosyalarınızı yazmanıza nasıl yardımcı olduğunu görebilmek için içeriği kopyalayıp yapıştırmak yerine kendiniz girin.

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @secure()
    @description('The administrator login username for the SQL server.')
    param sqlServerAdministratorLogin string
    
    @secure()
    @description('The administrator login password for the SQL server.')
    param sqlServerAdministratorLoginPassword string
    
    @description('The name and tier of the SQL database SKU.')
    param sqlDatabaseSku object = {
      name: 'Standard'
      tier: 'Standard'
    }
    
    var sqlServerName = 'teddy${location}${uniqueString(resourceGroup().id)}'
    var sqlDatabaseName = 'TeddyBear'
    
    resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
      name: sqlServerName
      location: location
      properties: {
        administratorLogin: sqlServerAdministratorLogin
        administratorLoginPassword: sqlServerAdministratorLoginPassword
      }
    }
    
    resource sqlDatabase 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
      parent: sqlServer
      name: sqlDatabaseName
      location: location
      sku: sqlDatabaseSku
    }
    

    Tüm parametrelerin, birlikte çalışmayı kolaylaştırmaya yardımcı olan dekoratörler içerdiğine @description dikkat edin. Ayrıca ve sqlServerAdministratorLoginPassword parametrelerine sqlServerAdministratorLogin dekoratör uygulandığına @secure da dikkat edin. Bu, Bicep'e bu parametre değerlerinin hassas olduğunu bildirir. Azure, hassas değerleri günlüklere yazdırmaz.

Depolama hesabı ekleme

Mantıksal sunucuların denetim ayarlarında, denetim verilerini içerecek bir depolama hesabı belirtmeniz gerekir. Bu depolama hesabını oluşturmak için Bicep dosyanızı güncelleştireceksiniz, ancak yalnızca denetim etkinleştirildiğinde.

  1. Parametre bildirimlerinin altına aşağıdaki parametreleri ekleyin:

    @description('The name of the environment. This must be Development or Production.')
    @allowed([
      'Development'
      'Production'
    ])
    param environmentName string = 'Development'
    
    @description('The name of the audit storage account SKU.')
    param auditStorageAccountSkuName string = 'Standard_LRS'
    
  2. Değişken bildirimlerinin altına aşağıdaki değişkenleri ekleyin:

    var auditingEnabled = environmentName == 'Production'
    var auditStorageAccountName = take('bearaudit${location}${uniqueString(resourceGroup().id)}', 24)
    

    Denetim kaynaklarını dağıtmak için koşul olarak kullanacağınız adlı auditingEnabledbir değişken oluşturduğunuza dikkat edin. Bunun gibi bir değişken oluşturduğunuzda, Bicep kodunuzun daha net ve daha kolay okunmasını sağlarsınız. Kaynaklarınızdaki koşullara bakan herkes neler olduğunu anlar.

    Değişkeninin adlı take()bir işlev kullandığına auditStorageAccountName da dikkat edin. Depolama hesap adlarının uzunluğu en fazla 24 karakterdir, bu nedenle bu işlev adın geçerli olduğundan emin olmak için dizenin sonunu keser.

  3. Dosyanın alt kısmında, kaynakların altına depolama hesabı için aşağıdaki kaynak tanımını ekleyin:

    resource auditStorageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = if (auditingEnabled) {
      name: auditStorageAccountName
      location: location
      sku: {
        name: auditStorageAccountSkuName
      }
      kind: 'StorageV2'  
    }
    

    Depolama hesabı tanımlarının bir dağıtım koşulu belirten anahtar sözcüğünü içerdiğine if dikkat edin.

Denetim ayarları ekleme

  1. Yeni eklediğiniz depolama hesabı kaynağının altına aşağıdakileri ekleyin:

    resource sqlServerAudit 'Microsoft.Sql/servers/auditingSettings@2021-11-01-preview' = if (auditingEnabled) {
      parent: sqlServer
      name: 'default'
      properties: {
        state: 'Enabled'
        storageEndpoint: environmentName == 'Production' ? auditStorageAccount.properties.primaryEndpoints.blob : ''
        storageAccountAccessKey: environmentName == 'Production' ? listKeys(auditStorageAccount.id, auditStorageAccount.apiVersion).keys[0].value : ''
      }
    }
    

    Tanımın depolama hesabıyla aynı if koşulu içerdiğine dikkat edin. Ayrıca ve storageAccountAccessKey özellikleri, storageEndpoint değerlerinin her zaman geçerli olduğundan emin olmak için soru işaretini (?) üçüncül işlecini kullanır. Bunu yapmazsanız Azure Resource Manager, kaynak dağıtım koşulunu değerlendirmeden önce ifade değerlerini değerlendirir ve depolama hesabı bulunamadığından bir hata döndürür.

  2. Dosyadaki değişiklikleri kaydedin.

Bicep dosyanızı doğrulama

Önceki tüm değişiklikleri tamamladıktan sonra Bicep dosyanız şu örnekteki gibi görünmelidir:

@description('The Azure region into which the resources should be deployed.')
param location string

@secure()
@description('The administrator login username for the SQL server.')
param sqlServerAdministratorLogin string

@secure()
@description('The administrator login password for the SQL server.')
param sqlServerAdministratorLoginPassword string

@description('The name and tier of the SQL database SKU.')
param sqlDatabaseSku object = {
  name: 'Standard'
  tier: 'Standard'
}

@description('The name of the environment. This must be Development or Production.')
@allowed([
  'Development'
  'Production'
])
param environmentName string = 'Development'

@description('The name of the audit storage account SKU.')
param auditStorageAccountSkuName string = 'Standard_LRS'

var sqlServerName = 'teddy${location}${uniqueString(resourceGroup().id)}'
var sqlDatabaseName = 'TeddyBear'
var auditingEnabled = environmentName == 'Production'
var auditStorageAccountName = take('bearaudit${location}${uniqueString(resourceGroup().id)}', 24)

resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
  name: sqlServerName
  location: location
  properties: {
    administratorLogin: sqlServerAdministratorLogin
    administratorLoginPassword: sqlServerAdministratorLoginPassword
  }
}

resource sqlDatabase 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
  parent: sqlServer
  name: sqlDatabaseName
  location: location
  sku: sqlDatabaseSku
}

resource auditStorageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = if (auditingEnabled) {
  name: auditStorageAccountName
  location: location
  sku: {
    name: auditStorageAccountSkuName
  }
  kind: 'StorageV2'  
}

resource sqlServerAudit 'Microsoft.Sql/servers/auditingSettings@2021-11-01-preview' = if (auditingEnabled) {
  parent: sqlServer
  name: 'default'
  properties: {
    state: 'Enabled'
    storageEndpoint: environmentName == 'Production' ? auditStorageAccount.properties.primaryEndpoints.blob : ''
    storageAccountAccessKey: environmentName == 'Production' ? listKeys(auditStorageAccount.id, auditStorageAccount.apiVersion).keys[0].value : ''
  }
}

Aksi takdirde, örneği kopyalayın veya şablonunuzu örnekle eşleşecek şekilde ayarlayın.

Bicep şablonunu Azure'a dağıtma

Bu şablonu Azure’a dağıtmak için, Visual Studio Code terminalinden Azure hesabınızda oturum açmanız gerekir. Azure CLI'yı yüklediğinizden emin olun ve korumalı alanı etkinleştirmek için kullandığınız hesapla oturum açmayı unutmayın.

  1. Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.

  2. Terminal penceresinin sağ tarafında gösterilen kabuk bash ise, doğru kabuk açıktır ve sonraki bölüme atlayabilirsiniz.

    Screenshot of the Visual Studio Code terminal window, with the bash option shown.

  3. Bash dışında bir kabuk görüntülenirse, kabuk açılan okunu ve ardından Git Bash'i seçin.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Git Bash Default selected.

  4. Terminal kabukları listesinde bash'i seçin.

    Screenshot of the Visual Studio Code terminal window, with the bash terminal selected.

  5. Terminalde, şablonunuzu kaydettiğiniz dizine gidin. Örneğin, şablonunuzu templates klasörüne kaydettiyseniz şu komutu kullanabilirsiniz:

    cd templates
    

Bicep'i yükleme

Bicep'in en son sürümüne sahip olduğunuzdan emin olmak için aşağıdaki komutu çalıştırın:

az bicep install && az bicep upgrade

Azure'da oturum açma

  1. Visual Studio Code terminalinde aşağıdaki komutu çalıştırarak Azure'da oturum açın:

    az login
    
  2. Açılan tarayıcıda Azure hesabınızda oturum açın.

    Visual Studio Code terminali, bu hesapla ilişkili aboneliklerin listesini görüntüler.

  3. Bu oturumda çalıştırdığınız tüm Azure CLI komutları için varsayılan aboneliği ayarlayın.

    az account set --subscription "Concierge Subscription"
    

    Not

    Yakın zamanda birden fazla korumalı alan kullandıysanız terminalde birden fazla Concierge Aboneliği örneği görüntülenebilir. Bu durumda, varsayılan abonelik olarak bir tane ayarlamak için sonraki iki adımı kullanın. Yukarıdaki komut başarılı olursa ve yalnızca bir Concierge Aboneliği listeleniyorsa, sonraki iki adımı atlayın.

  4. Concierge Aboneliği kimliklerini alın.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Abonelik kimliğini kullanarak varsayılan aboneliği ayarlayın. {your subscription ID} öğesini en son Concierge Aboneliği Kimliği ile değiştirin.

    az account set --subscription {your subscription ID}
    

Varsayılan kaynak grubunu ayarlama

Azure CLI'yı kullandığınızda, varsayılan kaynak grubunu ayarlayabilir ve bu alıştırmadaki Azure CLI komutlarının geri kalanından parametresini atlayabilirsiniz. Varsayılan değeri korumalı alan ortamında sizin için oluşturulan kaynak grubuna ayarlayın.

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

Azure CLI kullanarak şablonu Azure'a dağıtma

Visual Studio Code terminalinde aşağıdaki kodu çalıştırarak Bicep şablonunu Azure'a dağıtın. parametresini açıkça olarak ayarladığınıza locationwestus3dikkat edin.

az deployment group create --template-file main.bicep --parameters location=westus3

Bu şablonu Azure'a dağıtmak için Visual Studio Code terminalinden Azure hesabınızda oturum açın. Azure PowerShell'i yüklediğinizden emin olun ve korumalı alanı etkinleştiren hesapta oturum açın.

  1. Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.

  2. Terminal penceresinin sağ tarafında gösterilen kabuk powershell veya pwsh ise, doğru kabuk açıktır ve sonraki bölüme atlayabilirsiniz.

    Screenshot of the Visual Studio Code terminal window, with the pwsh option displayed in the shell dropdown list.

  3. PowerShell veya pwsh dışında bir kabuk görünürse, kabuk açılan okunu ve ardından PowerShell'i seçin.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown list shown and PowerShell selected.

  4. Terminal kabukları listesinde powershell veya pwsh seçeneğini belirleyin.

    Screenshot of the Visual Studio Code terminal window, with the PowerShell terminal selected.

  5. Terminalde, şablonunuzu kaydettiğiniz dizine gidin. Örneğin, şablonunuzu templates klasörüne kaydettiyseniz şu komutu kullanabilirsiniz:

    Set-Location -Path templates
    

Bicep CLI'yi yükleme

Azure PowerShell'den Bicep'i kullanmak için Bicep CLI'yı yükleyin.

Azure PowerShell kullanarak Azure’da oturum açma

  1. Visual Studio Code terminalinde aşağıdaki komutu çalıştırın:

    Connect-AzAccount
    

    Azure hesabınızda oturum açabilmeniz için bir tarayıcı açılır.

  2. Azure'da oturum açtıktan sonra terminalde bu hesapla ilişkili aboneliklerin listesi görüntülenir.

    Korumalı alanı etkinleştirdiyseniz Concierge Aboneliği adlı bir abonelik görüntülenir. Alıştırmanın geri kalanında kullanın.

  3. Bu oturumda çalıştırdığınız tüm Azure PowerShell komutları için varsayılan aboneliği ayarlayın.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Not

    Yakın zamanda birden fazla korumalı alan kullandıysanız terminalde birden fazla Concierge Aboneliği örneği görüntülenebilir. Bu durumda, varsayılan abonelik olarak bir tane ayarlamak için sonraki iki adımı kullanın. Yukarıdaki komut başarılı olursa ve yalnızca bir Concierge Aboneliği listeleniyorsa, sonraki iki adımı atlayın.

  4. Abonelik kimliğini alın. Aşağıdaki komutu çalıştırdığınızda abonelikleriniz ve bunların kimlikleri listelenir. öğesini bulun Concierge Subscriptionve ikinci sütundaki kimliği kopyalayın. şuna cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0benzer.

    Get-AzSubscription
    
  5. Etkin aboneliğinizi Concierge Aboneliği olarak değiştirin. {Abonelik kimliğiniz} değerini kopyaladığınız kimlikle değiştirdiğinizden emin olun.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Varsayılan kaynak grubunu ayarlama

Bu alıştırmada azure powershell komutlarının geri kalanından varsayılan kaynak grubunu ayarlayabilir ve parametresini atlayabilirsiniz. Bu varsayılan değeri korumalı alan ortamında sizin için oluşturulan kaynak grubuna ayarlayın.

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

Azure PowerShell kullanarak şablonu Azure'a dağıtma

Visual Studio Code terminalinde aşağıdaki Azure PowerShell komutunu çalıştırarak şablonu Azure'a dağıtın. Bu işlemin tamamlanması birkaç dakika sürebilir ve başarılı bir dağıtıma sahip olursunuz.

New-AzResourceGroupDeployment -TemplateFile main.bicep -location westus3

Dağıtımı yürütürken ve sqlServerAdministratorLoginPassword parametrelerini girmeniz sqlServerAdministratorLogin istenir.

İpucu

Güvenli parametreleri girdiğinizde, seçtiğiniz değerler belirli kurallara uymalıdır:

  • sqlServerAdministratorLoginveya rootgibi admin kolayca tahmin edilebilir bir oturum açma adı olmamalıdır. Yalnızca alfasayısal karakterler içerebilir ve bir harfle başlamalıdır.
  • sqlServerAdministratorLoginPassword en az sekiz karakter uzunluğunda olmalı ve küçük harfler, büyük harfler, sayılar ve simgeler içermelidir. Parola karmaşıklığı hakkında daha fazla bilgi için bkz . SQL Azure parola ilkesi.

Parametre değerleri gereksinimleri karşılamıyorsa Azure SQL mantıksal sunucunuzu dağıtmaz.

Ayrıca, girdiğiniz oturum açma bilgilerini ve parolayı not edin. Bunları kısa süre sonra yeniden kullanacaksınız.

parametresi için bir değer belirtmediğiniz için environmentName varsayılan değeri Development kullanılır.

Dağıtımın bitmesini bekleyin. Dağıtımınız bir konumun yeni Windows Azure SQL Veritabanı sunucuları oluşturmayı kabul etmediğini belirten bir iletiyle başarısız olursa veya eastus2gibi eastus farklı bir bölge seçin.

Dağıtımı doğrulama

Dağıttığınız kaynakları incelemek ve her dağıtımın sonuçlarını incelemek için Azure portalını kullanın.

  1. Azure portalına gidin ve aşağıdakileri yaparak korumalı alan aboneliğinde olduğunuzdan emin olun:

    a. Sağ üstteki avatarınızı seçin.
    b. Dizini değiştir’i seçin. Listede Microsoft Learn Korumalı Alan dizinini seçin.

  2. Sol bölmede Kaynak grupları'nı seçin.

  3. [sandbox resource group name] öğesini seçin.

  4. Genel Bakış bölümünde, bir dağıtımın başarılı olduğunu görebilirsiniz. Ayrıca mantıksal sunucunun ve SQL veritabanının dağıtıldığını ancak denetim için depolama hesabının dağıtılmadığını da görebilirsiniz.

    Not

    ile başlayan cloudshell bir ada sahip depolama hesabı dağıtımınızla ilgili değildir ve Learn korumalı alanı tarafından oluşturulmuştur.

    Screenshot of the Azure portal resource group overview pane, with a section displaying a successful deployment.

  5. Dağıtımlar'ın yanındaki 1 Başarılı'yı seçerek dağıtım ayrıntılarını görüntüleyin.

    Screenshot of the Azure portal resource group overview pane, displaying additional details of the successful deployment.

  6. Dağıtılan kaynakları görmek için main adlı dağıtımı seçin ve ardından dağıtım ayrıntıları'nı seçerek genişletin.

    Bu durumda, bir mantıksal sunucu ve bir SQL veritabanı dağıtılır. Depolama hesabı ve denetim ayarlarının kaynak listesinde yer almadığını fark edin.

    Screenshot of the Azure portal resource group overview pane for the specific deployment, with a logical server and database resource listed.

  7. Sayfayı tarayıcınızda açık bırakın. Dağıtımları daha sonra tekrar denetleyeceksiniz.

Üretim ortamı için yeniden dağıtma

Önceki dağıtımda parametresi için environmentName varsayılan değer kullanılmıştır ve bu da parametresinin olarak Developmentayarlandığı anlamına geliyordu.

Şimdi parametre değerini açıkça olarak olarak Productionayarlayacaksınız. Bu değişikliği yaparak, denetim amacıyla depolama hesabının dağıtılacağını ve mantıksal sunucuda denetimin etkinleştirileceğini bekliyorsunuz.

Üretim ortamı için şablonu dağıtma

Visual Studio Code terminalinde aşağıdaki kodu çalıştırarak Bicep şablonunu Azure'a dağıtın:

az deployment group create --template-file main.bicep --parameters environmentName=Production location=westus3

Visual Studio Code terminalinde aşağıdaki Azure PowerShell komutunu çalıştırarak şablonu Azure'a dağıtın:

New-AzResourceGroupDeployment -TemplateFile main.bicep -environmentName Production -location westus3

Dikkat

Daha önce kullandığınız oturum açma bilgilerini ve parolayı kullandığınızdan emin olun; aksi zaman dağıtım başarıyla tamamlanamayacaktır.

Bir veya iki dakika sonra dağıtımın başarıyla bitmesi gerekir.

Yeniden dağıtımı doğrulama

Bu alıştırmayı tamamlamak için yeniden dağıtma işleminin başarıyla tamamlandığını ve denetimin etkinleştirildiğini doğrulayın.

  1. Azure portalına dönün ve kaynak grubunuza gidin. Kaynak grubunuz zaten açıksa Yenile'yi seçin.

    Denetim amacıyla ek bir depolama hesabının dağıtıldığını görmeniz gerekir.

    Screenshot of the Azure portal resource group overview pane, showing that a storage account is deployed for auditing.

  2. Mantıksal sunucunuzu seçin (SQL server türüne sahip kaynağı arayın).

  3. Arama alanına Denetim yazın. Güvenlik'in altında Denetim'i seçin.

    Screenshot of the Azure portal interface for the logical server, showing the search field with Auditing entered.

  4. Bu mantıksal sunucu için denetimin etkinleştirildiğini doğrulayın.

    Screenshot of the Azure portal interface for the logical server, showing that the auditing configuration is enabled.