Migración de planos técnicos a pilas de implementación
En este artículo, se explica cómo convertir las definiciones y asignaciones de Blueprint en pilas de implementación. Las pilas de implementación son nuevas herramientas dentro del espacio de nombres Microsoft.Resources
, lo que incluye las características de Azure Blueprint en esta área.
Pasos de migración
Exporte las definiciones de plano técnico a los archivos JSON de definición de plano técnico, que incluyen los artefactos de las directivas de Azure, las asignaciones de roles de Azure y las plantillas. Para más información, consulte Exportación de la definición del plano técnico.
Convierta los archivos JSON de definición de plano técnico en una sola plantilla de ARM o en un archivo de Bicep que se implementará a través de pilas de implementación con las consideraciones siguientes:
- Asignaciones de roles: convierta las asignaciones de roles.
-
Directivas: convierta las asignaciones de directivas en la sintaxis de Bicep (o plantilla JSON de ARM) y, a continuación, agréguelas a la plantilla principal. También puede insertar el
policyDefinitions
en la plantilla JSON. - Plantillas: convierta las plantillas en una plantilla principal para su envío a una pila de implementación. Puede usar módulos en Bicep, insertar plantillas como plantillas anidadas o vínculos de plantilla y, opcionalmente, usar especificaciones de plantilla para almacenar las plantillas en Azure. Las especificaciones de plantilla no son necesarias para usar pilas de implementación.
-
Bloqueos: la pila de implementación DenySettingsMode le ofrece la capacidad de bloquear cambios no deseados a través de
DenySettingsMode
(similar a bloqueos de plano técnico). Puede configurarlos mediante la CLI de Azure o Azure PowerShell. Para ello, necesita los roles correspondientes para poder establecer la configuración de denegación. Para obtener información más detallada, consulte Pilas de implementación.
Opcionalmente, puede crear especificaciones de plantilla para las plantillas de ARM convertidas o los archivos de Bicep. Las especificaciones de plantilla permiten almacenar plantillas y sus versiones en el entorno de Azure, lo que simplifica el uso compartido de las plantillas en toda la organización. Las pilas de implementación permiten implementar definiciones de especificación de plantilla, plantillas de ARM o archivos de Bicep en un ámbito de destino especificado.
Ejemplo
El siguiente archivo de Bicep es un archivo de migración de ejemplo.
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 }
}