Desarrollo de plantillas para Azure Stack Hub con Azure Resource Manager
Al desarrollar una aplicación, es importante garantizar la portabilidad de las plantillas entre Azure y Azure Stack Hub. En este artículo se proporcionan consideraciones para desarrollar plantillas de Azure Resource Manager. Con estas plantillas, puede crear un prototipo de la aplicación y probar la implementación en Azure sin necesidad de acceder a un entorno de Azure Stack Hub.
Disponibilidad del proveedor de recursos
La plantilla que planee implementar debe utilizar solo servicios de Microsoft Azure que ya estén disponibles, o bien que estén en versión preliminar, en Azure Stack Hub.
Espacios de nombres públicos
Como Azure Stack Hub se hospeda en un centro de datos, tiene espacios de nombres de punto de conexión de servicio diferentes que los de la nube pública de Azure. Como resultado, se producirá un error en los puntos de conexión públicos codificados de forma rígida de las plantillas de Azure Resource Manager al tratar de implementarlos en Azure Stack Hub. Puede compilar dinámicamente puntos de conexión de servicio con las funciones reference
y concatenate
para recuperar valores del proveedor de recursos durante la implementación. Por ejemplo, en lugar de codificar de forma rígida blob.core.windows.net
en la plantilla, recupere primaryEndpoints.blob para establecer dinámicamente el punto de conexión osDisk.URI:
"osDisk": {"name": "osdisk","vhd": {"uri":
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'),
'/',variables('OSDiskName'),'.vhd')]"}}
Control de versiones de la API
Las versiones de los servicios de Azure pueden diferir entre Azure y Azure Stack Hub. Cada recurso requiere el atributo apiVersion, que define las funcionalidades que ofrece. Para garantizar la compatibilidad de la versión de API en Azure Stack Hub, estas son las versiones de API válidas para cada proveedor de recursos:
Proveedor de recursos | apiVersion |
---|---|
Proceso | 2015-06-15 |
Red | 2015-06-15, 2015-05-01-preview |
Storage | 2016-01-01, 2015-06-15, 2015-05-01-preview |
KeyVault | 2015-06-01 |
App Service | 2015-08-01 |
Funciones de plantillas
Las funciones de Azure Resource Manager proporcionan las funcionalidades necesarias para crear plantillas dinámicas. Por ejemplo, puede utilizar funciones para tareas como las siguientes:
- Concatenar o recortar cadenas.
- Hacer referencia a valores de otros recursos.
- Efectuar una iteración en los recursos para implementar varias instancias.
Estas funciones no están disponibles en Azure Stack Hub:
- Omitir
- Take
Ubicación de los recursos
Las plantillas de Azure Resource Manager usan un atributo location
para incluir recursos durante la implementación. En Azure, las ubicaciones hacen referencia a una región, como Oeste de EE. UU. o Sudamérica. En Azure Stack Hub, las ubicaciones son diferentes porque Azure Stack Hub está en el centro de datos. Para asegurarse de que las plantillas pueden transferirse entre Azure y Azure Stack Hub, res preciso hacer referencia a la ubicación del grupo de recursos al implementar recursos individuales. Puede hacerlo mediante [resourceGroup().Location]
para garantizar que todos los recursos hereden la ubicación del grupo de recursos. El siguiente código es un ejemplo de uso de esta función al implementar una cuenta de almacenamiento:
"resources": [
{
"name": "[variables('storageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "[variables('apiVersionStorage')]",
"location": "[resourceGroup().location]",
"comments": "This storage account is used to store the VM disks",
"properties": {
"accountType": "Standard_LRS"
}
}
]