Alıştırma - Kaynakları bir yönetim grubuna dağıtma

Tamamlandı

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:

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

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

  2. main.bicep dosyanızı silin ve aynı ada sahip yeni bir boş dosya oluşturun.

  3. Boş dosyayı kaydedin.

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

  1. Yeni eklediğiniz satırın altına aşağıdaki değişken tanımını ekleyin:

    var policyDefinitionName = 'DenyFandGSeriesVMs'
    
  2. 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.

  1. Değişken tanımının policyDefinitionName altına aşağıdaki değişkeni ekleyin:

    var policyAssignmentName = 'DenyFandGSeriesVMs'
    
  2. 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
      }
    }
    
  3. 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.

  1. Azure portalına gidin.

  2. Sol bölmede Tüm hizmetler'i seçin.

  3. Arama kutusuna yönetim grubu yazın ve ardından sonuçlar listesinden Yönetim grupları'nı seçin.

    Screenshot of the Azure portal interface showing the service list with 'Management groups' highlighted.

  4. Gizli R&D Projeleri yönetim grubunu seçin.

    Screenshot of the Azure portal interface, highlighting 'Secret R&D Projects' in the list of management groups.

  5. Sol bölmedeki Arama kutusuna Dağıtımlar yazın ve İdare'nin altında Dağıtımlar'ı seçin.

    Screenshot of the Azure portal interface, showing the management group details.

  6. Hangi kaynakların dağıtıldığını görmek için mg-scope ile başlayan dağıtımı seçin.

    Screenshot of the Azure portal Deployments pane, highlighting the 'mg-scope-*' deployment in the list of deployments.

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

    Screenshot of the Azure portal 'Overview' pane for the selected deployment.

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