Compartir a través de


Tutorial: Implementación de una plantilla de Resource Manager local

Aprenda a implementar una plantilla de Azure Resource Manager desde la máquina local. Se tarda en realizar unos 8 minutos.

Este tutorial es el primero de una serie. A medida que avanza en la serie, puede modularizar la plantilla mediante la creación de una plantilla vinculada, almacenar la plantilla vinculada en una cuenta de almacenamiento, proteger la plantilla vinculada mediante el token de SAS y aprender a crear una canalización de DevOps para implementar plantillas. Esta serie se centra en la implementación de plantillas. Si desea conocer el desarrollo de plantillas, consulte los tutoriales para principiantes.

Obtención de las herramientas

Asegúrese de que tiene las herramientas que necesita para implementar plantillas.

Implementación desde la línea de comandos

Para implementar la plantilla, necesita Azure PowerShell o la CLI de Azure. Para obtener instrucciones de instalación, consulte:

Después de instalar Azure PowerShell o la CLI de Azure, inicie sesión por primera vez. Para obtener ayuda, consulte Inicio de sesión: PowerShell o CLI de Azure.

Editor (opcional)

Las plantillas son archivos JSON. Para revisar o editar plantillas, necesita un buen editor JSON. Se recomienda usar Visual Studio Code con la extensión Resource Manager Tools. Si necesita instalar estas herramientas, consulte Inicio rápido: Creación de plantillas de Resource Manager Visual Studio Code.

Revisión de la plantilla

La plantilla implementa una cuenta de almacenamiento, un plan de App Service y una aplicación web. Si está interesado en crear la plantilla, consulte Tutorial plantillas de Inicio rápido. Sin embargo, no es necesario crear la plantilla para completar este tutorial.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "projectName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11,
      "metadata": {
        "description": "Specify a project name that is used to generate resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify a location for the resources."
      }
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ],
      "metadata": {
        "description": "Specify the storage account type."
      }
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "Specify the Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "storageAccountName": "[format('{0}{1}', parameters('projectName'), uniqueString(resourceGroup().id))]",
    "webAppName": "[format('{0}WebApp', parameters('projectName'))]",
    "appServicePlanName": "[format('{0}Plan', parameters('projectName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2022-09-01",
      "name": "[variables('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[variables('webAppName')]",
      "location": "[parameters('location')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      ]
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints]"
    }
  }
}

Importante

Los nombres de cuentas de almacenamiento deben ser únicos, tener entre 3 y 24 caracteres, y usar solo números y letras minúsculas. La variable de la plantilla de muestra storageAccountName combina el máximo de 11 caracteres del parámetro projectName con un valor uniqueString de 13 caracteres.

Guarde una copia de la plantilla en la máquina local con la extensión .json, por ejemplo, azuredeploy.json. Esta plantilla se implementa más adelante en el tutorial.

Inicio de sesión en Azure

Para empezar a trabajar con Azure PowerShell o la CLI de Azure para implementar una plantilla, inicie sesión con sus credenciales de Azure.

Connect-AzAccount

Si tiene varias suscripciones de Azure, seleccione la suscripción que desee usar. Reemplace [SubscriptionID/SubscriptionName] y los corchetes [] por la información de la suscripción:

Set-AzContext [SubscriptionID/SubscriptionName]

Creación de un grupo de recursos

Al implementar una plantilla, se especifica un grupo de recursos para los recursos. Antes de ejecutar el comando de implementación, cree el grupo de recursos con la CLI de Azure o Azure PowerShell. Para elegir entre Azure PowerShell y la CLI de Azure, seleccione las pestañas de la sección de código siguiente. Los ejemplos de la CLI de este artículo están escritos para el shell de Bash.

$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource and resource group names"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroup `
  -Name $resourceGroupName `
  -Location "Central US"

Implementar plantilla

Use una o ambas opciones de implementación para implementar la plantilla.

$projectName = Read-Host -Prompt "Enter the same project name"
$templateFile = Read-Host -Prompt "Enter the template file path and file name"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroupDeployment `
  -Name DeployLocalTemplate `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile $templateFile `
  -projectName $projectName `
  -verbose

Para más información sobre la implementación de plantillas con Azure PowerShell, consulte Implementación de recursos con las plantillas de Resource Manager y Azure PowerShell.

Limpieza de recursos

Para limpiar los recursos implementados, elimine el grupo de recursos.

  1. En Azure Portal, seleccione Grupos de recursos en el menú de la izquierda.
  2. Escriba el nombre del grupo de recursos en el campo Filtrar por nombre.
  3. Seleccione el nombre del grupo de recursos.
  4. Seleccione Eliminar grupo de recursos del menú superior.

Pasos siguientes

Ha aprendido a implementar una plantilla local. En el siguiente tutorial, se separa la plantilla en una plantilla principal y una plantilla vinculada. También aprenderá a almacenar y proteger la plantilla vinculada.