Tutorial: Uso de condiciones en plantillas de Resource Manager
Aprenda a implementar recursos de Azure en función de las condiciones de una plantilla de Azure Resource Manager (ARM).
En el tutorial Establecimiento del orden de implementación de los recursos, se crean una máquina virtual, una red virtual y algunos otros recursos dependientes incluidos en una cuenta de almacenamiento. En lugar de crear una nueva cuenta de almacenamiento, cada vez, dejará que la gente elija entre crear una nueva cuenta de almacenamiento y usar una existente. Para lograr este objetivo, definirá un parámetro adicional. Si el valor del parámetro es new, se crea una cuenta de almacenamiento. En caso contrario, se usa una cuenta de almacenamiento existente con el nombre proporcionado.
En este tutorial se describen las tareas siguientes:
- Abra una plantilla de inicio rápido.
- Modificación de la plantilla
- Implementación de la plantilla
- Limpieza de recursos
Este tutorial solo trata de un escenario básico de condiciones de uso. Para más información, consulte:
- Estructura de archivos de plantilla: Condición.
- Implementación de un recurso de forma condicional en una plantilla de Resource Manager.
- Función de plantilla: If.
- Funciones de comparación para plantillas de Resource Manager
Para un módulo de Learn que abarca las condiciones, consulte Administración de implementaciones complejas en la nube mediante características avanzadas de la plantilla de ARM.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Requisitos previos
Para completar este artículo, necesitará lo siguiente:
Visual Studio Code con la extensión Resource Manager Tools. Consulte Quickstart: Creación de plantillas de ARM mediante Visual Studio Code.
Para aumentar la seguridad, utilice una contraseña generada para la cuenta de administrador de máquina virtual. Puede usar Azure Cloud Shell ejecutar el siguiente comando en PowerShell o Bash:
openssl rand -base64 32
Para más información, ejecute
man openssl rand
para abrir la página manual.Azure Key Vault está diseñado para proteger las claves criptográficas y otros secretos. Para más información, consulte el Tutorial: Integración de Azure Key Vault en la implementación de la plantilla de Resource Manager. También se recomienda actualizar la contraseña cada tres meses.
Abra una plantilla de inicio rápido.
Plantillas de inicio rápido de Azure es un repositorio de plantillas de Azure Resource Manager. En lugar de crear una plantilla desde cero, puede buscar una plantilla de ejemplo y personalizarla. La plantilla que se usa en este tutorial se denomina Deploy a simple Windows VM.
En Visual Studio Code, seleccione Archivo>Abrir archivo.
En Nombre de archivo, pegue el código URL siguiente:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Seleccione Abrir para abrir el archivo.
La plantilla define seis recursos:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
Puede resultar útil revisar la referencia de la plantilla antes de personalizar una plantilla.
Seleccione Archivo>Guardar como para guardar una copia del archivo en la máquina local con el nombre azuredeploy.json.
Modificación de la plantilla
Realice dos cambios en la plantilla existente:
- Incorporación de un parámetro de nombre de cuenta de almacenamiento. Los usuarios pueden especificar un nuevo nombre de cuenta de almacenamiento o uno que ya exista.
- Agregue un nuevo parámetro llamado
newOrExisting
. En la implementación se usa este parámetro para determinar si crear una cuenta de almacenamiento o usar una cuenta de almacenamiento existente.
Éste es el procedimiento para realizar los cambios:
Abra azuredeploy.json en Visual Studio Code.
Reemplace las tres apariciones de
variables('storageAccountName')
porparameters('storageAccountName')
en toda la plantilla.Quite la siguiente definición de variable:
Agregue los dos parámetros siguientes al principio de la sección parameters:
"storageAccountName": { "type": "string" }, "newOrExisting": { "type": "string", "allowedValues": [ "new", "existing" ] },
Presione Alt+Mayús+F para dar formato a la plantilla en Visual Studio Code.
La definición de parámetros actualizada se parece a esta:
Agregue la siguiente línea al principio de la definición de la cuenta de almacenamiento.
"condition": "[equals(parameters('newOrExisting'),'new')]",
La condición comprueba el valor del parámetro
newOrExisting
. Si el valor del parámetro es new, en la implementación se crea la cuenta de almacenamiento.La definición de la cuenta de almacenamiento actualizada se parece a esta:
Actualice la propiedad
storageUri
de la definición de recursos de la máquina virtual con el siguiente valor:"storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
Este cambio es necesario cuando se usa una cuenta de almacenamiento existente en otro grupo de recursos.
Guarde los cambios.
Implementación de la plantilla
Inicie sesión en Cloud Shell.
Elija el entorno que prefiera; para ello, seleccione PowerShell o Bash (para CLI) en la esquina superior izquierda. Es necesario reiniciar el shell cuando realiza el cambio.
Seleccione Cargar/descargar archivos y, después, seleccione Cargar. Consulte la captura de pantalla anterior. Seleccione el archivo que guardó en la sección anterior. Después de cargar el archivo, puede usar el comando
ls
y el comandocat
para comprobar que la operación de carga se ha realizado correctamente.Ejecute el siguiente script de PowerShell para implementar la plantilla.
Importante
El nombre de la cuenta de almacenamiento debe ser único en Azure. El nombre debe tener solo letras minúsculas o números. No debe superar los 24 caracteres. El nombre de la cuenta de almacenamiento es el nombre del proyecto con store anexado. Asegúrese de que el nombre del proyecto y el nombre de la cuenta de almacenamiento generada cumplen los requisitos para el nombre de la cuenta de almacenamiento.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names" $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)" $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)" $vmAdmin = Read-Host -Prompt "Enter the admin username" $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUsername $vmAdmin ` -adminPassword $vmPassword ` -dnsLabelPrefix $dnsLabelPrefix ` -storageAccountName $storageAccountName ` -newOrExisting $newOrExisting ` -TemplateFile "$HOME/azuredeploy.json" Write-Host "Press [ENTER] to continue ..."
Nota:
Se produce un error en la implementación si
newOrExisting
es new, pero la cuenta de almacenamiento con el nombre especificado ya existe.
Pruebe otra implementación con newOrExisting
establecido en existing y especifique una cuenta de almacenamiento existente. Para crear una cuenta de almacenamiento con antelación, consulte Creación de una cuenta de almacenamiento.
Limpieza de recursos
Cuando los recursos de Azure ya no sean necesarios, limpie los recursos que implementó eliminando el grupo de recursos. Para eliminar el grupo de recursos, seleccione Pruébelo para abrir Cloud Shell. Para pegar el script de PowerShell, haga clic con el botón derecho en el panel de Shell y, a continuación, seleccione Pegar.
$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
Pasos siguientes
En este tutorial, ha desarrollado una plantilla que permite a los usuarios elegir entre crear una cuenta de almacenamiento y usar una existente. Para aprender a recuperar secretos de Azure Key Vault y usar los secretos como contraseñas en la implementación de plantillas, consulte:
Integrate Key Vault in template deployment (Integración de Key Vault en la implementación de plantillas)