Compartir vía


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 por la serie, modularizará la plantilla mediante la creación de una plantilla vinculada, almacenará la plantilla vinculada en una cuenta de almacenamiento y protegerá esta plantilla 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

Comience por asegurarse de que tiene las herramientas que necesita para implementar plantillas.

Implementación desde la línea de comandos

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

Después de instalar Azure PowerShell o la CLI de Azure, asegúrese de iniciar 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 de JSON. Se recomienda Visual Studio Code con la extensión Herramientas de Resource Manager. 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, puede seguir el tutorial sobre las plantillas de inicio rápido. No obstante, no es necesario 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 que contendrá los recursos. Antes de ejecutar el comando de implementación, cree el grupo de recursos con la CLI de Azure o Azure PowerShell. Seleccione las pestañas en la siguiente sección de código para elegir entre Azure PowerShell y la CLI de Azure. 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

Limpie los recursos que implementó eliminando 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, dividirá la plantilla en una plantilla principal y una plantilla vinculada, y aprenderá a almacenar y proteger la plantilla vinculada.