Sdílet prostřednictvím


Migrace podrobných plánů do zásobníků nasazení

Tento článek vysvětluje, jak převést definice a přiřazení podrobného plánu na zásobníky nasazení. Zásobníky nasazení jsou nové nástroje v rámci Microsoft.Resources oboru názvů, které do této oblasti přinášejí funkce Azure Blueprintu.

Kroky migrace

  1. Exportujte definice podrobného plánu do souborů JSON definice podrobného plánu, mezi které patří artefakty zásad Azure, přiřazení rolí Azure a šablony. Další informace najdete v tématu Export definice podrobného plánu.

  2. Převeďte soubory JSON definice podrobného plánu na jednu šablonu ARM nebo soubor Bicep, které se mají nasadit prostřednictvím zásobníků nasazení, s následujícími aspekty:

    • Přiřazení rolí: Převeďte všechna přiřazení rolí.
    • Zásady: Převeďte všechna přiřazení zásad na syntaxi Bicep (nebo šablony JSON ARM) a pak je přidejte do hlavní šablony. Můžete ho policyDefinitions také vložit do šablony JSON.
    • Šablony: Převeďte všechny šablony na hlavní šablonu pro odeslání do zásobníku nasazení. Můžete použít moduly v Bicep, vkládat šablony jako vnořené šablony nebo odkazy šablon a volitelně použít specifikace šablon k uložení šablon v Azure. Pro použití zásobníků nasazení se nevyžadují specifikace šablon.
    • Zámky: Zásobník nasazení DenySettingsMode umožňuje blokovat nežádoucí změny prostřednictvím DenySettingsMode (podobně jako zámky podrobného plánu). Můžete je nakonfigurovat pomocí Azure CLI nebo Azure PowerShellu. K tomu potřebujete odpovídající role, abyste mohli nastavit nastavení zamítnutí. Další informace najdete v tématu Zásobníky nasazení.
  3. Volitelně můžete vytvořit specifikace šablon pro převedené šablony ARM nebo soubory Bicep. Specifikace šablon umožňují ukládat šablony a jejich verze ve vašem prostředí Azure, což zjednodušuje sdílení šablon ve vaší organizaci. Zásobníky nasazení umožňují nasadit definice specifikací šablon nebo šablony ARM nebo soubory Bicep do zadaného cílového oboru.

Vzorek

Následující soubor Bicep je ukázkový soubor migrace.

targetScope = 'subscription'

param roleAssignmentName string = 'myTestRoleAssignment'
param roleDefinitionId string = guid(roleAssignmentName)
param principalId string = guid('myTestId')

param policyAssignmentName string = 'myTestPolicyAssignment'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'

param rgName string = 'myTestRg'
param rgLocation string = deployment().location
param templateSpecName string = 'myNetworkingTs'

// Step 1 - create role assignments
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(roleAssignmentName)
  properties: {
    principalId: principalId
    roleDefinitionId: roleDefinitionId
  }
}

// Step 2 - create policy assignments
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
    name: policyAssignmentName
    scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
    properties: {
        policyDefinitionId: policyDefinitionID
    }
}

// Step 3 - create template artifacts via modules (or template specs)
resource rg1 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: rgName
  location: rgLocation
}

module vnet 'templates/bicep/vnet.bicep' = if (rgName == 'myTestRg') {
  name: uniqueString(rgName)
  scope: rg1
  params: { location: rgLocation }
}