Uso de Azure PowerShell para exportar una plantilla

Para ayudar con la creación de plantillas de Azure Resource Manager, puede exportar una plantilla desde los recursos existentes. La plantilla exportada le ayudará a comprender la sintaxis y las propiedades JSON que implementan los recursos. Para automatizar las implementaciones futuras, comience con la plantilla exportada y modifíquela para su escenario. El proceso de exportación de plantillas intenta crear una plantilla que se pueda usar. Sin embargo, la mayoría de las plantillas exportadas requieren algunas modificaciones antes de poder usarse para implementar recursos de Azure.

Resource Manager permite elegir uno o más recursos para exportarlos a una plantilla. Se puede centrar en los recursos exactos que necesita en la plantilla.

Este artículo muestra cómo exportar plantillas mediante Azure PowerShell. Para conocer otras opciones, consulte:

Elección de la opción de exportación correcta

Hay dos maneras de exportar una plantilla:

  • Exportar desde el grupo de recursos o el recurso. Esta opción genera una plantilla nueva a partir de los recursos existentes. La plantilla exportada es una "instantánea" del estado actual del grupo de recursos. Puede exportar un grupo de recursos completo o recursos específicos dentro de ese grupo de recursos.

  • Guardar desde el historial. Esta opción recupera una copia exacta de una plantilla usada para la implementación. Especifique la implementación a partir del historial de implementación.

Según la opción que elija, las plantillas exportadas tendrán distintas calidades.

Desde el grupo de recursos o el recurso Desde el historial
La plantilla se genera automáticamente. Es probable que quiera mejorar el código antes de implementarlo. La plantilla es una copia exacta de la creada por el autor de la plantilla. Está lista para volver a implementarse sin ningún cambio.
La plantilla es una instantánea del estado actual de los recursos. Incluye todos los cambios manuales que se hayan realizado después de la implementación. En la plantilla solo se muestra el estado de los recursos en el momento de la implementación. No se incluyen los cambios manuales que haya realizado después de la implementación.
Puede seleccionar los recursos de un grupo de recursos que se van a exportar. Se incluyen todos los recursos para una implementación específica. No se puede seleccionar un subconjunto de esos recursos o agregar recursos que se hayan agregado en otro momento.
En la plantilla se incluyen todas las propiedades de los recursos, incluidas algunas que normalmente no se establecerían durante la implementación. Es posible que quiera quitar o borrar estas propiedades antes de volver a usar la plantilla. En la plantilla solo se incluyen las propiedades necesarias para la implementación. La plantilla es más dispersa y fácil de leer.
Probablemente en la plantilla no se incluyan todos los parámetros que necesita para su reutilización. La mayoría de los valores de propiedad están codificados de forma rígida en la plantilla. Para volver a implementar la plantilla en otros entornos, tendrá que agregar parámetros que aumenten la capacidad de configurar los recursos. También puede anular la selección de Incluir parámetros y así podrá crear sus propios parámetros. En la plantilla se incluyen parámetros que facilitan la tarea de volver a implementar en otros entornos.

Exporte la plantilla desde un grupo de recursos o un recurso cuando:

  • Tenga que capturar cambios de los recursos que se han realizado después de la implementación original.
  • Quiera seleccionar los recursos que se van a exportar.
  • Los recursos no se crearon con una plantilla.

Exporte la plantilla desde el historial cuando:

  • Quiera una plantilla fácil de reutilizar.
  • No necesite incluir los cambios realizados después de la implementación original.

Limitaciones

No se garantiza que la exportación se complete correctamente. La exportación no es una manera confiable de convertir recursos preexistentes en plantillas que se puedan usar en producción. Es mejor crear recursos desde cero mediante un archivo Bicep escrito a mano, una plantilla de ARM o Terraform.

Al realizar una exportación de un grupo de recursos o un recurso, la plantilla exportada se genera a partir de los esquemas publicados para cada tipo de recurso. En ocasiones, el esquema no tiene la versión más reciente de un tipo de recurso. Compruebe la plantilla exportada para asegurarse de que incluye las propiedades necesarias. Si es preciso, edite la plantilla exportada para usar la versión de API que necesite.

Es posible que falten algunos parámetros de contraseña en las plantillas exportadas. Debe comprobar la referencia de plantilla y agregar manualmente estos parámetros a fin de poder usar las plantillas para implementar recursos.

La característica de exportación de plantillas no admite la exportación de recursos de Azure Data Factory. Para más información sobre cómo exportar recursos de Data Factory, consulte Copia o clonación de una factoría de datos en Azure Data Factory.

Para exportar los recursos creados mediante el modelo de implementación clásica, debe migrarlos al modelo de implementación de Resource Manager.

Si recibe una advertencia al exportar una plantilla que indica que un tipo de recurso no se ha exportado, aún puede detectar las propiedades de ese recurso. Para obtener las propiedades de los recursos, vea Referencia de plantillas. También puede consultar la API de REST de Azure para el tipo de recurso.

Hay un límite de 200 recursos en el grupo de recursos para el que se crea la plantilla exportada. Si intenta exportar un grupo de recursos con más de 200 recursos, se muestra el mensaje de error Export template is not supported for resource groups more than 200 resources.

Exportación de la plantilla desde un grupo de recursos

Después de configurar el grupo de recursos, puede exportar una plantilla de Resource Manager para el grupo de recursos.

Para exportar todos los recursos de un grupo de recursos, use el cmdlet Export-AzResourceGroup y proporcione el nombre del grupo de recursos.

Export-AzResourceGroup -ResourceGroupName demoGroup

La plantilla se guarda como un archivo local.

En lugar de exportar todos los recursos del grupo de recursos, puede seleccionar los recursos que quiere exportar.

Para exportar un recurso, pase el identificador de ese recurso.

$resource = Get-AzResource `
  -ResourceGroupName <resource-group-name> `
  -ResourceName <resource-name> `
  -ResourceType <resource-type>
Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource $resource.ResourceId

Para exportar más de un recurso, pase los identificadores de los recursos en una matriz.

Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource @($resource1.ResourceId, $resource2.ResourceId)

Al exportar la plantilla, puede especificar si se usan parámetros en ella. De forma predeterminada, se incluyen parámetros para los nombres de recursos, pero no tienen un valor predeterminado.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "type": "String"
  }
}

Si usa el parámetro -SkipResourceNameParameterization al exportar la plantilla, los parámetros de los nombres de recursos no se incluyen en la plantilla. En cambio, el nombre del recurso se establece directamente en el recurso en su valor actual. No se puede personalizar el nombre durante la implementación.

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2022-09-01",
    "name": "demoHostPlan",
    ...
  }
]

Si usa el parámetro -IncludeParameterDefaultValue al exportar la plantilla, el parámetro de la plantilla incluye un valor predeterminado que se establece en el valor actual. Puede usar ese valor predeterminado o pasar un valor diferente para sobrescribir el predeterminado.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

Guardado de una plantilla desde el historial de implementación

Puede guardar una plantilla de una implementación en el historial de implementación. La plantilla que se obtiene es exactamente la que se ha usado para la implementación.

Para obtener una plantilla de una implementación de grupo de recursos, use el cmdlet Save-AzResourceGroupDeploymentTemplate. Especifique el nombre de la implementación que desea recuperar. Para obtener ayuda con el nombre de una implementación, consulte Visualización del historial de implementación con Azure Resource Manager.

Save-AzResourceGroupDeploymentTemplate -ResourceGroupName demoGroup -DeploymentName demoDeployment

La plantilla se guarda como un archivo local con el nombre de la implementación.

Para implementar plantillas en otros niveles, utilice:

Pasos siguientes