使用 Terraform 预配 Azure Web App
在本教程中,我们将逐步介绍如何使用 Terraform 预配 Azure Web App。Terraform 是一个开源的基础设施即代码工具,允许您以声明式的方式定义和管理您的基础设施。
先决条件
开始之前,您需要满足以下条件:
- Azure 帐户
- 在本地机器上安装 Terraform
- 在本地机器上安装 Azure CLI
在 Azure 中为 Terraform 创建服务主体
在 Azure 上使用 Terraform 时,您需要一个“服务主体”进行身份验证。“服务主体”是一种为应用程序、托管服务和自动化工具创建的标识,用于访问 Azure 资源。
要创建服务主体,请在 Azure CLI 中运行以下命令:
登录 Azure CLI
开始之前,请确保您已使用 Azure CLI 登录到您的 Azure 帐户:
az login设置您的订阅:
如果您有多个 Azure 订阅,请指定您打算使用的那个:
az account set --subscription="YOUR_SUBSCRIPTION_ID"创建服务主体:
以下命令将创建一个服务主体。将 YOUR_APP_NAME 替换为您应用程序的合适名称:
az ad sp create-for-rbac --name "YOUR_APP_NAME" --role contributor --scopes /subscriptions/YOUR_SUBSCRIPTION_ID将
YOUR_SUBSCRIPTION_ID替换为您的订阅 ID。此命令的输出将提供 appId、displayName、name、password 和 tenant。务必记下这些值,特别是 appId (客户端 ID) 和 password (客户端密钥),因为您需要它们进行 Terraform 身份验证。
在环境变量中指定服务主体凭据
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 环境变量:
. ~/.bashrcpowershell:
$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 配置
为您的 Terraform 配置文件创建一个新目录。
在该目录中创建一个名为
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" }运行
terraform init来初始化目录。运行
terraform plan查看执行计划。运行
terraform apply来应用更改。出现提示时输入yes以确认部署。等待部署完成。
导航到 Web 应用 URL 以查看部署的应用程序。
您也可以在
terraform apply命令的输出中看到 Web 应用 URL。
您必须根据您的应用程序更改运行时堆栈的 dotnet 版本。例如,如果您使用的是 .NET 7,您应该将
dotnet_version = "6.0"更改为dotnet_version = "7.0"。
销毁 Terraform 配置
运行
terraform destroy来销毁已创建的资源。出现提示时输入
yes以确认销毁。
抠丁客


