Implementación de una especificación de plantilla
Después de crear y publicar la especificación de plantilla, puede implementarla. En esta unidad, aprenderá sobre las formas de implementar una especificación de plantilla.
Creación de una implementación mediante una especificación de plantilla
Para implementar una especificación de plantilla en un grupo de recursos, use el mismo cmdlet New-AzResourceGroupDeployment
al que está acostumbrado. En lugar de especificar un archivo de plantilla, especifique el identificador de recurso de una especificación de plantilla, como se muestra en este ejemplo:
New-AzResourceGroupDeployment `
-TemplateSpecId '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS'
Aunque las especificaciones de plantilla se deben crear dentro de un grupo de recursos, puede implementarlas en suscripciones, grupos de administración o incluso inquilinos mediante estos cmdlets:
Para implementar en este ámbito: | Use este cmdlet de PowerShell: |
---|---|
Resource group | New-AzResourceGroupDeployment |
Subscription | New-AzSubscriptionDeployment |
Grupo de administración | New-AzManagementGroupDeployment |
Inquilino | New-AzTenantDeployment |
Cada uno de estos cmdlets acepta el parámetro -TemplateSpecId
para iniciar una implementación de especificación de plantilla en uno de estos ámbitos.
Para implementar una especificación de plantilla en un grupo de recursos, use el mismo comando az deployment group create
con el que está familiarizado. En lugar de especificar un archivo de plantilla, especifique el identificador de recurso de una especificación de plantilla, como se muestra en este ejemplo:
az deployment group create \
--template-spec "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS"
Aunque las especificaciones de plantilla se deben crear dentro de un grupo de recursos, puede implementarlas en suscripciones, grupos de administración o incluso inquilinos mediante estos comandos:
Para implementar en este ámbito: | Ejecute este comando de la CLI de Azure: |
---|---|
Resource group | az deployment group create |
Subscription | az deployment sub create |
Grupo de administración | az deployment mg create |
Inquilino | az deployment tenant create |
Cada uno de estos comandos acepta el argumento --template-spec
para iniciar una implementación de especificación de plantilla en uno de estos ámbitos.
Uso de una especificación de plantilla como una implementación vinculada
Para usar una especificación de plantilla desde otra plantilla de Azure Resource Manager (plantilla de ARM), cree una implementación que use esa especificación de plantilla. Este tipo de implementación se denomina implementación vinculada porque está vinculando a una plantilla de implementación especificada externamente.
En Azure, una implementación es un recurso que tiene el tipo de recurso Microsoft.Resources/deployments
. Al implementar una plantilla de ARM, está creando un recurso de implementación. El mismo concepto se aplica al implementar una especificación de plantilla, como la siguiente:
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createStorage",
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
}
}
}
Cuando tenga parámetros para proporcionar a la implementación de la especificación de plantilla, use la propiedad parameters
:
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createStorage",
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
},
"parameters": {
"storageAccountName": {
"value": "[parameters('storageAccountName')]"
}
}
}
}
Uso de una especificación de plantilla como un módulo de Bicep
Puede usar una especificación de plantilla como un módulo dentro de un archivo de Bicep:
module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
name: 'storageAccountTemplateSpec'
}
Observe que la ruta de acceso del módulo usa un formato especial:
Hay tres componentes en la ruta de acceso del módulo, separados por el carácter de dos puntos (:
):
- Esquema: Bicep admite varios tipos de módulo, que se denominan esquemas. Cuando se usa una especificación de plantilla como un módulo, se usa
ts
como esquema. - Identificador de suscripción, nombre del grupo de recursos y nombre de especificación de plantilla: Estos valores deben especificar la ubicación del recurso de especificación de plantilla que publicó anteriormente. El id. de suscripción, el nombre del grupo de recursos y el nombre de la especificación de plantilla se separan mediante barras diagonales (
/
). Esta sección de la ruta de acceso del módulo no es el identificador de recurso completo de la especificación de plantilla: son solo algunos de los componentes del identificador de recurso. - Versión: es necesario incluir la versión de la especificación de plantilla.
Nota:
No se pueden usar variables, parámetros ni interpolación de cadenas al especificar la ruta de acceso a un módulo. La ruta de acceso completa de la especificación de plantilla debe guardarse en el archivo de Bicep.
Cuando tenga parámetros por proporcionar a la especificación de plantilla, use la propiedad params
:
module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
name: 'storageAccountTemplateSpec'
params: {
storageAccountName: storageAccountName
}
}
El archivo de la especificación de plantilla se descarga y se copia (transpilado) en la plantilla de ARM JSON cuando se compila el archivo de Bicep. Normalmente esta operación sucede cuando se implementa el archivo de Bicep, pero también se pueden usar las herramientas de Bicep para transpilar explícitamente mediante la ejecución del comando bicep build
.