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.

Diagrama de las condiciones de uso de la plantilla de Resource Manager

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:

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:

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.

  1. En Visual Studio Code, seleccione Archivo>Abrir archivo.

  2. 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
    
  3. Seleccione Abrir para abrir el archivo.

  4. La plantilla define seis recursos:

    Puede resultar útil revisar la referencia de la plantilla antes de personalizar una plantilla.

  5. 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:

  1. Abra azuredeploy.json en Visual Studio Code.

  2. Reemplace las tres apariciones de variables('storageAccountName') por parameters('storageAccountName') en toda la plantilla.

  3. Quite la siguiente definición de variable:

    Captura de pantalla que resalta las definiciones de variables que se deben quitar.

  4. 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:

    Condición de uso de Resource Manager

  5. 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:

    Captura de pantalla que muestra la definición de la cuenta de almacenamiento actualizada.

  6. 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.

  7. Guarde los cambios.

Implementación de la plantilla

  1. Inicie sesión en Cloud Shell.

  2. 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.

    Archivo de carga de Cloud Shell de Azure Portal

  3. 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 comando cat para comprobar que la operación de carga se ha realizado correctamente.

  4. 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)