Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al implementar los recursos, debe especificar si la implementación es una actualización incremental o una actualización completa. La diferencia entre estos dos modos es la forma en que Resource Manager controla los recursos existentes en el grupo de recursos que no están en la plantilla.
Importante
Utilice pilas de implementación para realizar eliminaciones de recursos cuando utilice plantillas ARM o archivos Bicep, ya que el modo completo quedará gradualmente obsoleto.
En ambos modos, Resource Manager intenta crear todos los recursos especificados en la plantilla. Si el recurso ya existe en el grupo de recursos y su configuración no cambia, no se realiza ninguna operación para ese recurso. Si cambia los valores de propiedad de un recurso, el recurso se actualiza con esos nuevos valores. Si intenta actualizar la ubicación o el tipo de un recurso existente, se produce un error en la implementación. En su lugar, implemente un nuevo recurso con la ubicación o el tipo que necesita.
El modo predeterminado es incremental.
Modo incremental
En el modo incremental, Resource Manager deja los recursos sin cambios que existen en el grupo de recursos, pero no se especifican en la plantilla. Los recursos de la plantilla se agregan al grupo de recursos.
Importante
El modo incremental es el modo de implementación recomendado. Si es necesario eliminar recursos como parte de un archivo de Bicep o una plantilla JSON de ARM, utilice pilas de implementación.
Al volver a implementar un recurso existente en modo incremental, se vuelven a aplicar todas las propiedades. Las propiedades no se agregan incrementalmente. Un malentendido común es pensar que las propiedades que no se especifican en la plantilla se dejan sin cambios. Si no especifica determinadas propiedades, Resource Manager interpreta la implementación como sobrescribir esos valores. Las propiedades que no se incluyen en la plantilla se restablecen a los valores predeterminados. Especifique todos los valores no predeterminados para el recurso, no solo los que está actualizando. La definición de recurso de la plantilla siempre contiene el estado final del recurso. No puede representar una actualización parcial a un recurso existente.
Advertencia
En raras ocasiones, puede especificar propiedades en un recurso o en uno de sus recursos secundarios. Dos ejemplos comunes son subredes en redes virtuales y valores de configuración de sitio para aplicaciones web. En estos casos, debe gestionar cuidadosamente las actualizaciones incrementales.
En el caso de las subredes, especifique los valores a través de la subnets
propiedad en el recurso Microsoft.Network/virtualNetworks . No defina los valores a través del recurso secundario Microsoft.Network/virtualNetworks/subnets. Siempre que las subredes se definan en la red virtual, puede volver a implementar la red virtual y no perder las subredes.
En el caso de los valores de configuración del sitio, los valores se implementan en el tipo de recurso secundario Microsoft.Web/sites/config
. Si vuelve a implementar la aplicación web y especifica un objeto vacío para los valores de configuración del sitio, el recurso secundario no se actualiza. Sin embargo, si proporciona nuevos valores de configuración de sitio, se actualiza el tipo de recurso secundario.
Modo completo
Advertencia
No se recomienda el modo completo. Si desea realizar eliminaciones con implementaciones de plantillas de Bicep o ARM, use Pilas de implementación.
En modo completo, Resource Manager elimina los recursos que existen en el grupo de recursos, pero no se especifican en la plantilla.
Nota:
Use siempre la operación what-if antes de implementar una plantilla en modo completo. What-if muestra qué recursos se crearán, eliminarán o modificarán. Use what-if para evitar la eliminación accidental de recursos.
Si la plantilla incluye un recurso que no se implementa porque la condición se evalúa como false, el resultado depende de la versión de la API REST que use para implementar la plantilla. Si usa una versión anterior a 2019-05-10, el recurso no se elimina. A partir de 2019-05-10, el recurso se elimina. Las versiones más recientes de Azure PowerShell y la CLI de Azure eliminan el recurso.
Tenga cuidado al usar el modo completo con bucles de copia. Los recursos que no se especifican en la plantilla después de resolver el bucle de copia se eliminan.
Si implementa en más de un grupo de recursos en una plantilla, los recursos del grupo de recursos especificado en la operación de implementación pueden eliminarse. Los recursos de los grupos de recursos secundarios no se eliminarán.
Existen algunas diferencias en la forma en que los tipos de recursos controlan las eliminaciones de modo completo. Los recursos primarios se eliminan automáticamente cuando no están en una plantilla que se implementa en modo completo. Por el contrario, algunos recursos secundarios no se eliminan automáticamente cuando no están en la plantilla. A pesar de ello, estos recursos secundarios sí se eliminan si también se elimina el recurso principal.
Por ejemplo, si el grupo de recursos contiene una zona DNS (Microsoft.Network/dnsZones
tipo de recurso) y un registro CNAME (Microsoft.Network/dnsZones/CNAME
tipo de recurso), la zona DNS es el recurso primario para el registro CNAME. Si implementa con el modo completo y no incluye la zona DNS en la plantilla, se eliminan la zona DNS y el registro CNAME. Si incluye la zona DNS en la plantilla, pero no incluye el registro CNAME, el CNAME no se elimina.
Para obtener una lista de cómo controlan los tipos de recursos la eliminación, consulte Eliminación de recursos de Azure para implementaciones en modo completo.
Si el grupo de recursos está bloqueado, el modo completo no elimina los recursos.
Nota:
Solo las plantillas de nivel raíz admiten el modo de implementación completo. Para las plantillas vinculadas o anidadas, debe usar el modo incremental.
Las implementaciones de nivel de suscripción no admiten el modo completo.
Actualmente, el portal no admite el modo completo.
Resultado de ejemplo
Para ilustrar la diferencia entre los modos incrementales y completos, tenga en cuenta el siguiente escenario.
El grupo de recursos contiene:
- Recurso A
- Recurso B
- Recurso C
La plantilla contiene:
- Recurso A
- Recurso B
- Recurso D
Cuando se implementa en modo incremental , el grupo de recursos tiene:
- Recurso A
- Recurso B
- Recurso C
- Recurso D
Cuando se implementa en modo completo , se elimina el recurso C. El grupo de recursos tiene:
- Recurso A
- Recurso B
- Recurso D
Establecimiento del modo de implementación
Para establecer el modo de implementación al implementar con PowerShell, use el Mode
parámetro .
New-AzResourceGroupDeployment `
-Mode Complete `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\MyTemplates\storage.json
Para establecer el modo de implementación al implementar con la CLI de Azure, use el mode
parámetro .
az deployment group create \
--mode Complete \
--name ExampleDeployment \
--resource-group ExampleResourceGroup \
--template-file storage.json
En el ejemplo siguiente se muestra una plantilla vinculada establecida en modo de implementación incremental:
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedTemplate",
"properties": {
"mode": "Incremental",
<nested-template-or-external-template>
}
}
]
Pasos siguientes
- Para obtener información sobre la creación de plantillas de Resource Manager, consulte Nociones sobre la estructura y la sintaxis de las plantillas de ARM.
- Para más información sobre la implementación de recursos, consulte Implementación de recursos con plantillas de ARM y Azure PowerShell.
- Para ver las operaciones de un proveedor de recursos, consulte API de REST de Azure.