Alıştırma - Kaynakları bir yönetim grubuna dağıtma
Teddybear Projesi başarılı oldu ve oyuncak şirketinizdeki gizli Ar-Ge geliştirmesi daha da yeni oyuncakları araştırmaya hazır. Ekip, neredeyse günlük olarak sizden yeni abonelikler istemeye başladı ve ilkelerini bunların tümüne uygulaması gerekiyor.
Her abonelikte ilke tanımlarını ve atamalarını yinelemek yerine, ekibin tüm aboneliklerini bir yönetim grubuna yerleştirmeye karar verdiniz. Ardından ilkeyi her aboneliğe ayrı ayrı uygulamak yerine yönetim grubunun tamamına uygulayabilirsiniz.
Bu alıştırmada, bir yönetim grubuna ilke tanımları ve atamaları uygulamak için yeni bir Bicep şablonu oluşturacaksınız.
İşlem sırasında şunları yapacaksınız:
- Yeni bir yönetim grubu oluşturun.
- Yeni bir yönetim grubu kapsamlı Bicep dosyası oluşturun.
- Azure İlkesi kaynaklarını dosyaya ekleyin.
- Kaynak kimliğini el ile oluşturarak ilke atamasını ilke tanımına bağlayın.
- Şablonu dağıtın ve sonucu doğrulayın.
Bu alıştırma aşağıdaki önkoşulları gerektirir:
- Yönetim gruplarının Azure kiracınızda etkinleştirilmesi gerekir.
- Hiyerarşinizde yeni bir yönetim grubu oluşturmak için izinlere ihtiyacınız vardır.
- yönetim grubuna Azure İlkesi kaynakları dağıtmak için izinlere ihtiyacınız vardır.
Geçerli Azure hesabınızla bu gereksinimleri karşılayamazsanız ücretsiz deneme sürümü alabilir ve yeni bir Azure aboneliği ve kiracısı oluşturabilirsiniz. Alternatif olarak, bu alıştırmadaki dağıtım adımlarını atlayabilirsiniz.
Yönetim grubu oluşturma
Bu alıştırmada, Azure ortamınızın başka bir bölümündeki kaynakları yanlışlıkla etkilememesi için yeni bir yönetim grubu oluşturacaksınız.
Visual Studio Code terminalinde aşağıdaki Azure CLI komutlarını çalıştırın:
az account management-group create \
--name SecretRND \
--display-name "Secret R&D Projects"
Varsayılan olarak, yeni yönetim grubu kiracı kök yönetim grubunun doğrudan alt öğesi olarak oluşturulur. Yönetim grubunu mevcut yönetim grubu hiyerarşinizde belirli bir yere yerleştirmeniz gerekiyorsa parametresini --parent-id
kullanın ve üst grup olarak kullanılacak yönetim grubunun adını belirtin.
Visual Studio Code terminalinde aşağıdaki Azure PowerShell komutlarını çalıştırın:
New-AzManagementGroup `
-GroupId 'SecretRND' `
-DisplayName 'Secret R&D Projects'
Varsayılan olarak, yeni yönetim grubu kiracı kök yönetim grubunun alt öğesi olarak oluşturulur. Yönetim grubunu mevcut yönetim grubu hiyerarşinizde belirli bir yere yerleştirmeniz gerekiyorsa parametresini -ParentId
kullanın ve üst grup olarak kullanılacak yönetim grubunun adını belirtin.
Gerçek bir dağıtımda R&D ekibinin aboneliklerini yönetim grubuna taşırsınız. Bu alıştırmada, yönetim grubu abonelik içermese bile ilkeleri dağıtacaksınız. Yönetim grubunun boş olması veya abonelikler içermesi fark etmese de aynı dağıtım işlemi uygulanır.
Yönetim grubuna dağıtmak için Bicep dosyası oluşturma
Visual Studio Code'u açın.
main.bicep dosyanızı silin ve aynı ada sahip yeni bir boş dosya oluşturun.
Boş dosyayı kaydedin.
Dosyaya aşağıdaki içeriği ekleyin.
targetScope = 'managementGroup'
Bu kod satırının Bicep'e şablonunuzun yönetim grubu kapsamında dağıtılacağını bildirdiğini unutmayın.
İlke tanımı ekleme
Daha önce yaptığınız gibi Bicep dosyasında bir ilke tanımı oluşturun.
Yeni eklediğiniz satırın altına aşağıdaki değişken tanımını ekleyin:
var policyDefinitionName = 'DenyFandGSeriesVMs'
Dosyanın en altına aşağıdaki Azure İlkesi tanımını ekleyin:
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = { name: policyDefinitionName properties: { policyType: 'Custom' mode: 'All' parameters: {} policyRule: { if: { allOf: [ { field: 'type' equals: 'Microsoft.Compute/virtualMachines' } { anyOf: [ { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_F*' } { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_G*' } ] } ] } then: { effect: 'deny' } } } }
İlke tanımı, aboneliğinize daha önce uyguladığınız ilke tanımıyla aynıdır. Ancak bu kez bunu bir yönetim grubuna dağıtacaksınız.
İlke ataması ekleme
Şimdi ilkeyi yönetim grubuna uygulayacaksınız. Bu, ilkenin bu yönetim grubunun alt öğeleri olan tüm aboneliklere uygulanacağı anlamına gelir.
Değişken tanımının
policyDefinitionName
altına aşağıdaki değişkeni ekleyin:var policyAssignmentName = 'DenyFandGSeriesVMs'
Dosyanın alt kısmındaki ilke tanımı kaynağının altına aşağıdaki ilke atamasını ekleyin:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Dosyadaki değişiklikleri kaydedin.
Şablonunuzu doğrulama
Şablonunuz aşağıdaki gibi görünmelidir:
targetScope = 'managementGroup'
var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
allOf: [
{
field: 'type'
equals: 'Microsoft.Compute/virtualMachines'
}
{
anyOf: [
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_F*'
}
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_G*'
}
]
}
]
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = {
name: policyAssignmentName
properties: {
policyDefinitionId: policyDefinition.id
}
}
Aksi takdirde, örneği kopyalayın veya şablonunuzu örnekle eşleşecek şekilde ayarlayın.
Şablonu Azure’a dağıtma
Visual Studio Code terminalinde aşağıdaki Azure CLI komutlarını kullanarak şablonu dağıtın:
managementGroupId="SecretRND"
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="mg-scope-"$today
az deployment mg create \
--management-group-id $managementGroupId \
--name $deploymentName \
--location westus \
--template-file $templateFile
Terminalde Azure PowerShell komutlarını kullanarak şablonu dağıtın.
$managementGroupId = 'SecretRND'
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "mg-scope-$today"
New-AzManagementGroupDeployment `
-ManagementGroupId $managementGroupId `
-Name $deploymentName `
-Location westus `
-TemplateFile $templateFile
Abonelik dağıtımlarında olduğu gibi, dağıtım meta verileri için açıkça bir ad ve konum belirttiğinize dikkat edin. Ayrıca mevcut bir dağıtımın adını kullanma olasılığını azaltmak için bugünün tarihini kullanıyorsunuz.
Dağıtımın tamamlanması bir veya iki dakika sürebilir ve başarılı bir dağıtım görürsünüz.
Dağıtımı doğrulama
Abonelik kapsamlı dağıtımlarda olduğu gibi, yönetim grubu kapsamlı dağıtımları Azure portalında görüntüleyebilirsiniz.
Azure portalına gidin.
Sol bölmede Tüm hizmetler'i seçin.
Arama kutusuna yönetim grubu yazın ve ardından sonuçlar listesinden Yönetim grupları'nı seçin.
Gizli R&D Projeleri yönetim grubunu seçin.
Sol bölmedeki Arama kutusuna Dağıtımlar yazın ve İdare'nin altında Dağıtımlar'ı seçin.
Hangi kaynakların dağıtıldığını görmek için mg-scope ile başlayan dağıtımı seçin.
Seçili dağıtımın Genel Bakış bölmesinde Dağıtım ayrıntıları'nı seçerek genişletin. İki Azure İlkesi kaynağı listelenir.
Kaynakları temizleme
Yönetim grubu kapsamındaki kaynaklarınızı başarıyla dağıttınız. Oluşturduğunuz ilke kaynaklarını ve yönetim grubunu kaldırabilirsiniz.
az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND