Tutorial: Adición de funciones de plantilla a una plantilla de Resource Manager
En este tutorial, aprenderá a agregar funciones de plantilla a la plantilla de Resource Manager (ARM). Las funciones se usan para construir valores de forma dinámica. Además de estas funciones de plantilla proporcionadas por el sistema, también puede crear funciones definidas por el usuario. Este tutorial se realiza en 7 minutos.
Prerrequisitos
Aunque no es obligatorio, se recomienda realizar el tutorial sobre parámetros.
Debe tener Visual Studio Code instalado y en funcionamiento con la extensión Herramientas de Azure Resource Manager, y Azure PowerShell o la CLI de Azure. Para más información, consulte las herramientas de plantilla.
Revisión de la plantilla
Al final del tutorial anterior, la plantilla tenía el siguiente código archivo JSON:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "eastus",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Supongamos que ha codificado de forma rígida la ubicación de la cuenta de almacenamiento de Azure en eastus, pero debe implementarla en otra región. Debe agregar un parámetro para agregar flexibilidad a la plantilla y permitirle tener una ubicación diferente.
Uso de una función
Si ha completado el tutorial de parámetros, ha usado una función. Cuando agregó "[parameters('storageName')]"
, usó la función parameters. Los corchetes indican que la sintaxis incluida entre ellos es una expresión template. Resource Manager resuelve la sintaxis en lugar de tratarla como un valor literal.
Las funciones agregan flexibilidad a la plantilla mediante la obtención dinámica de valores durante la implementación. En este tutorial, se usa una función para obtener la ubicación de la implementación del grupo de recursos.
En el ejemplo siguiente se resaltan los cambios para agregar un parámetro denominado location
. El valor predeterminado del parámetro llama a la función resourceGroup. Esta función devuelve un objeto con información sobre el grupo de recursos implementado. Una de las propiedades del objeto es una propiedad de ubicación. Cuando se usa el valor predeterminado, la cuenta de almacenamiento y el grupo de recursos tienen la misma ubicación. Los recursos dentro de un grupo tienen ubicaciones diferentes.
Copie el archivo completo y reemplace la plantilla por su contenido.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Implementar plantilla
En los tutoriales anteriores, creó una cuenta de almacenamiento en el Este de EE. UU., pero el grupo de recursos se crea en el Centro de EE. UU. En este tutorial, crea la cuenta de almacenamiento en la misma región que el grupo de recursos. Use el valor predeterminado para la ubicación, con lo que no será necesario proporcionar el valor de ese parámetro. Debe proporcionar un nuevo nombre para la cuenta de almacenamiento porque está creando una cuenta de almacenamiento en una ubicación diferente. Use store2, por ejemplo, como prefijo en lugar de store1.
Si no ha creado el grupo de recursos, consulte Creación del grupo de recursos. En el ejemplo se supone que ha establecido la variable templateFile
en la ruta de acceso al archivo de plantilla, como se muestra en el primer tutorial.
New-AzResourceGroupDeployment `
-Name addlocationparameter `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storageName "{new-unique-name}"
Nota
Si se produjo un error en la implementación, use el modificador verbose
para obtener información sobre los recursos que se están creando. Utilice el modificador debug
para más información sobre la depuración.
Comprobación de la implementación
Para comprobar la implementación, explore el grupo de recursos desde Azure Portal.
- Inicie sesión en Azure Portal.
- En el menú izquierdo, seleccione Grupos de recursos.
- Active la casilla situada a la izquierda de myResourceGroup y seleccione myResourceGroup.
- Seleccione el grupo de recursos que ha creado. El nombre predeterminado es myResourceGroup.
- Observe que la cuenta de almacenamiento implementada y el grupo de recursos tienen la misma ubicación.
Limpieza de recursos
Si va a pasar al siguiente tutorial, no es necesario que elimine el grupo de recursos.
Si va a terminar ya, puede eliminar el grupo de recursos.
- En Azure Portal, seleccione Grupos de recursos en el menú de la izquierda.
- Escriba el nombre del grupo de recursos en el campo de texto Filtro por cualquier campo....
- Active la casilla situada junto a myResourceGroup y seleccione myResourceGroup o el nombre del grupo de recursos.
- Seleccione Eliminar grupo de recursos del menú superior.
Pasos siguientes
En este tutorial, se usa una función para definir el valor predeterminado de un parámetro. En esta serie de tutoriales, seguirá usando funciones. Al final de la serie, se agregan funciones a cada sección de la plantilla.