Alıştırma - Kaynakları koşullu olarak dağıtma
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
Visual Studio Code'u açın.
main.bicep adlı yeni bir dosya oluşturun.
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.
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 vesqlServerAdministratorLoginPassword
parametrelerinesqlServerAdministratorLogin
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.
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'
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ı
auditingEnabled
bir 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ığınaauditStorageAccountName
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.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
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 vestorageAccountAccessKey
ö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.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.
Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.
Terminal penceresinin sağ tarafında gösterilen kabuk bash ise, doğru kabuk açıktır ve sonraki bölüme atlayabilirsiniz.
Bash dışında bir kabuk görüntülenirse, kabuk açılan okunu ve ardından Git Bash'i seçin.
Terminal kabukları listesinde bash'i seçin.
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
Visual Studio Code terminalinde aşağıdaki komutu çalıştırarak Azure'da oturum açın:
az login
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.
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.
Concierge Aboneliği kimliklerini alın.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
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 location
westus3
dikkat 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.
Terminal menüsünde Yeni Terminal’i seçin. Terminal penceresi genellikle ekranınızın alt yarısında açılır.
Terminal penceresinin sağ tarafında gösterilen kabuk powershell veya pwsh ise, doğru kabuk açıktır ve sonraki bölüme atlayabilirsiniz.
PowerShell veya pwsh dışında bir kabuk görünürse, kabuk açılan okunu ve ardından PowerShell'i seçin.
Terminal kabukları listesinde powershell veya pwsh seçeneğini belirleyin.
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
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.
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.
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.
Abonelik kimliğini alın. Aşağıdaki komutu çalıştırdığınızda abonelikleriniz ve bunların kimlikleri listelenir. öğesini bulun
Concierge Subscription
ve ikinci sütundaki kimliği kopyalayın. şunacf49fbbc-217c-4eb6-9eb5-a6a6c68295a0
benzer.Get-AzSubscription
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:
sqlServerAdministratorLogin
veyaroot
gibiadmin
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 eastus2
gibi 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.
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.Sol bölmede Kaynak grupları'nı seçin.
[sandbox resource group name] öğesini seçin.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.Dağıtımlar'ın yanındaki 1 Başarılı'yı seçerek dağıtım ayrıntılarını görüntüleyin.
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.
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 Development
ayarlandığı anlamına geliyordu.
Şimdi parametre değerini açıkça olarak olarak Production
ayarlayacaksı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.
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.
Mantıksal sunucunuzu seçin (SQL server türüne sahip kaynağı arayın).
Arama alanına Denetim yazın. Güvenlik'in altında Denetim'i seçin.
Bu mantıksal sunucu için denetimin etkinleştirildiğini doğrulayın.