项目

本文档有多个版本。请选择最适合您的选项。

UI
Database
Tiered

使用 Terraform 预配 Azure Web App

在本教程中,我们将逐步介绍如何使用 Terraform 预配 Azure Web App。Terraform 是一个开源的基础设施即代码工具,允许您以声明式的方式定义和管理您的基础设施。

先决条件

开始之前,您需要满足以下条件:

在 Azure 中为 Terraform 创建服务主体

在 Azure 上使用 Terraform 时,您需要一个“服务主体”进行身份验证。“服务主体”是一种为应用程序、托管服务和自动化工具创建的标识,用于访问 Azure 资源。

要创建服务主体,请在 Azure CLI 中运行以下命令:

  1. 登录 Azure CLI

    开始之前,请确保您已使用 Azure CLI 登录到您的 Azure 帐户:

    az login
    
  2. 设置您的订阅:

    如果您有多个 Azure 订阅,请指定您打算使用的那个:

    az account set --subscription="YOUR_SUBSCRIPTION_ID"
    
  3. 创建服务主体:

    以下命令将创建一个服务主体。将 YOUR_APP_NAME 替换为您应用程序的合适名称:

    az ad sp create-for-rbac --name "YOUR_APP_NAME" --role contributor --scopes /subscriptions/YOUR_SUBSCRIPTION_ID
    

    YOUR_SUBSCRIPTION_ID 替换为您的订阅 ID。

    此命令的输出将提供 appIddisplayNamenamepasswordtenant。务必记下这些值,特别是 appId (客户端 ID)password (客户端密钥),因为您需要它们进行 Terraform 身份验证。

  4. 在环境变量中指定服务主体凭据

    bash:

    export ARM_SUBSCRIPTION_ID="<azure_subscription_id>"
    export ARM_TENANT_ID="<azure_subscription_tenant_id>"
    export ARM_CLIENT_ID="<service_principal_appid>"
    export ARM_CLIENT_SECRET="<service_principal_password>"
    

    要执行 ~/.bashrc 脚本,请运行 source ~/.bashrc(或其缩写形式 . ~/.bashrc)。您也可以退出并重新打开 Cloud Shell,脚本将自动运行。 运行以下 bash 命令来验证 Azure 环境变量:

    . ~/.bashrc
    

    powershell:

    $env:ARM_SUBSCRIPTION_ID="<azure_subscription_id>"
    $env:ARM_TENANT_ID="<azure_subscription_tenant_id>"
    $env:ARM_CLIENT_ID="<service_principal_appid>"
    $env:ARM_CLIENT_SECRET="<service_principal_password>"
    

    运行以下 PowerShell 命令来验证 Azure 环境变量:

    gci env:ARM_*
    

    请将值替换为您自己的。

创建 Terraform 配置

  1. 为您的 Terraform 配置文件创建一个新目录。

  2. 在该目录中创建一个名为 main.tf 的新文件,并添加以下代码:

    # 配置 Azure 提供程序
    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 3.0.0"
        }
      }
      required_version = ">= 0.14.9"
    }
    provider "azurerm" {
      features {}
    }
    
    # 创建资源组
    resource "azurerm_resource_group" "rg" {
      name     = "demo-abp-web-app"
      location = "westeurope"
    }
    
    # 创建 Linux 应用服务计划
    resource "azurerm_service_plan" "appserviceplan" {
      name                = "demo-abp-web-app-plan"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
      os_type             = "Linux"
      sku_name            = "B3"
    }
    
    # 创建 Web 应用,传入应用服务计划 ID
    resource "azurerm_linux_web_app" "webapp" {
      name                  = "demo-abp-web-app"
      location              = azurerm_resource_group.rg.location
      resource_group_name   = azurerm_resource_group.rg.name
      service_plan_id       = azurerm_service_plan.appserviceplan.id
      https_only            = true
      site_config {
        application_stack {
          dotnet_version = "6.0"
        }
        minimum_tls_version  = "1.2"
      }
    }
    
    output "webappurl" {
    
      value = "${azurerm_linux_web_app.webapp.name}.azurewebsites.net"
    }
    
  3. 运行 terraform init 来初始化目录。

  4. 运行 terraform plan 查看执行计划。

  5. 运行 terraform apply 来应用更改。出现提示时输入 yes 以确认部署。

  6. 等待部署完成。

  7. 导航到 Web 应用 URL 以查看部署的应用程序。

您也可以在 terraform apply 命令的输出中看到 Web 应用 URL。

您必须根据您的应用程序更改运行时堆栈的 dotnet 版本。例如,如果您使用的是 .NET 7,您应该将 dotnet_version = "6.0" 更改为 dotnet_version = "7.0"

销毁 Terraform 配置

  1. 运行 terraform destroy 来销毁已创建的资源。

  2. 出现提示时输入 yes 以确认销毁。

在本文档中