Tutorial: Adición de parámetros a la plantilla de Resource Manager
En el tutorial anterior, aprendió a agregar una cuenta de almacenamiento de Azure a la plantilla y a implementarla. En este tutorial, aprenderá a mejorar la plantilla de Azure Resource Manager (ARM) con ayuda de parámetros. Se tardan 14 minutos en completar esta instrucción.
Aunque no es obligatorio, se recomienda realizar el tutorial sobre recursos.
Debe tener Visual Studio Code instalado y en funcionamiento con la extensión Herramientas de Azure Resource Manager, y Azure PowerShell o la Interfaz de la línea de comandos de Azure (CLI). Para más información, consulte las herramientas de 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",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "{provide-unique-name}",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Puede que observe que existe un problema con esta plantilla. El nombre de la cuenta de almacenamiento está codificado de forma rígida. Esta plantilla solo se puede usar para implementar la misma cuenta de almacenamiento cada vez. Para implementar una cuenta de almacenamiento con un nombre diferente, tiene que crear una nueva plantilla, lo que obviamente no es una forma práctica de automatizar las implementaciones.
Para que la plantilla se pueda volver a usar, vamos a agregar un parámetro que puede usar para pasar un nombre de cuenta de almacenamiento. En el código JSON resaltado en el ejemplo siguiente se muestra lo que ha cambiado en la plantilla. El parámetro storageName
se identifica como una cadena. El nombre de la cuenta de almacenamiento consta de letras minúsculas o números y tiene un límite de 24 caracteres.
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
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Vamos a implementar la plantilla. En el ejemplo siguiente se implementa la plantilla con la CLI de Azure o PowerShell. Observe que se proporciona el nombre de la cuenta de almacenamiento como uno de los valores en el comando de implementación. Para el nombre de la cuenta de almacenamiento, proporcione el mismo nombre que usó en el tutorial anterior.
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 addnameparameter `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storageName "{your-unique-name}"
Después de implementar una cuenta de almacenamiento con el mismo nombre que usó anteriormente, es posible que se pregunte cómo afecta la reimplementación al recurso.
Si el recurso ya existe y no hay ningún cambio en las propiedades, no es necesario realizar ninguna acción adicional. Si el recurso existe y cambia una propiedad, se actualiza. Si el recurso no existe, se crea.
Esta manera de controlar las actualizaciones implica que la plantilla puede incluir todos los recursos necesarios para una solución de Azure. Puede volver a implementar la plantilla de forma segura con la certeza de que los recursos se cambiarán o se crearán solo cuando sea necesario. Si agrega archivos a su cuenta de almacenamiento, por ejemplo, puede volver a implementar la cuenta de almacenamiento sin perder los archivos.
Los parámetros le permiten personalizar la implementación, ya que proporcionan valores específicos para un entorno concreto. Puede pasar diferentes valores, por ejemplo, en función de si está implementando en un entorno de desarrollo, de prueba o de producción.
La plantilla anterior siempre implementa una cuenta de almacenamiento con redundancia local (LRS) estándar Standard_LRS. Puede que quiera disponer de flexibilidad para implementar diferentes referencias de almacén (SKU) según el entorno. En el ejemplo siguiente se resaltan los cambios para agregar un parámetro para la SKU. Copie el archivo completo y péguelo en la plantilla.
{
"$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
}
}
]
}
El parámetro storageSKU
tiene un valor predeterminado. Use este valor cuando la implementación no lo especifique. También tiene una lista de valores permitidos. Estos valores coinciden con los valores necesarios para crear una cuenta de almacenamiento. Quiere que los usuarios de la plantilla pasen SKU que funcionen.
Está listo para volver a implementar. Dado que la SKU predeterminada está establecida en Standard_LRS, ya ha proporcionado un valor de parámetro.
New-AzResourceGroupDeployment `
-Name addskuparameter `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storageName "{your-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.
Para ver la flexibilidad de la plantilla, vamos a implementarla de nuevo. Esta vez, establezca el parámetro de SKU en el almacenamiento con redundancia geográfica estándar (GRS) Standard_GRS. Puede pasar un nuevo nombre para crear una cuenta de almacenamiento diferente, o bien usar el mismo nombre para actualizar la cuenta de almacenamiento existente. Ambas opciones funcionan.
New-AzResourceGroupDeployment `
-Name usenondefaultsku `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storageName "{your-unique-name}" `
-storageSKU Standard_GRS
Por último, vamos a realizar una prueba más y ver lo que sucede cuando se pasa una SKU que no es uno de los valores permitidos. En este caso, probaremos un escenario en el que el usuario de la plantilla piensa que basic es una de las SKU.
New-AzResourceGroupDeployment `
-Name testskuparameter `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storageName "{your-unique-name}" `
-storageSKU basic
El comando produce un error enseguida con un mensaje de error que proporciona los valores permitidos. El procesador ARM encuentra el error antes de que se inicie la implementación.
Si va a pasar al siguiente tutorial, no es necesario que elimine el grupo de recursos.
Si va a parar, es aconsejable limpiar los recursos implementados mediante la eliminación del 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.
Ha mejorado la plantilla creada en el primer tutorial mediante la adición de parámetros. En el siguiente tutorial, obtendrá información sobre las funciones de plantilla.