用途
Terraform Azure 用于在 Azure 上以基础设施即代码(IaC)方式预置和管理资源,基于 AzureRM Provider。适合以下情况:需要多云或云无关的 IaC;团队在 AWS、Azure、GCP 上统一使用 Terraform;需要 plan/apply 工作流在部署前预览变更;希望使用模块化、可复用的基础设施组件;生产环境需要状态锁定和漂移检测。
主要能力
- Provider 配置:定义 azurerm、azuread、random 等 Provider 及版本约束,配置 azurerm backend 远程状态。
- 远程状态:使用 Azure Storage Account 存储 tfstate,支持状态锁定。
- 资源组:创建和管理 Azure 资源组。
- 虚拟网络:定义 VNet、子网(AKS、应用、数据)、网络安全组(NSG)及子网关联。
- AKS 集群:创建 Kubernetes 集群,配置默认节点池、自动扩缩、可用区、网络插件(azure/calico)、Azure AD RBAC、OMS 代理、Key Vault 密钥提供程序,以及额外节点池。
- Key Vault:创建 Key Vault,配置网络 ACL、访问策略、密钥轮换,并存储 SQL 密码等机密。
- SQL 数据库:创建 MSSQL Server 和数据库,配置 Azure AD 管理员、SKU、区域冗余、短期保留策略,以及私有终结点。
- 输出:导出资源组名称、AKS 集群名称、kubeconfig、Key Vault URI、SQL FQDN、VNet ID 等。
- 工作流命令:init、validate、fmt、plan、apply、destroy、import、state 操作、workspace 隔离等。
- 模块结构:提供 modules/ 与 environments/ 目录组织方式,以及模块调用示例。
- 故障排查:涵盖状态锁、Provider 版本冲突、资源已存在、循环依赖、状态损坏、权限不足、漂移、模块路径错误等常见问题及修复方法。
使用方式
- 安装 Terraform:通过 HashiCorp APT 仓库安装,并验证
terraform version。 - 安装 Azure CLI 并登录:
az login,设置订阅。 - 创建远程状态存储:创建资源组、存储账户和容器。
- 编写配置:providers.tf、variables.tf、terraform.tfvars、资源文件(resource-group.tf、network.tf、aks.tf、keyvault.tf、database.tf)、outputs.tf。
- 执行工作流:
terraform init、terraform validate、terraform fmt -recursive、terraform plan、terraform apply。 - 使用模块:在 environments/prod/main.tf 中调用 networking、aks、database 等模块。
适用场景
- 在 Azure 上实施 IaC,需要多云或云无关方案。
- 团队统一使用 Terraform 管理 AWS、Azure、GCP。
- 需要部署前变更预览(plan/apply)。
- 需要模块化、可复用的基础设施组件。
- 生产环境需要状态锁定和漂移检测。
限制
资料未提供具体收费、价格、平台兼容性、性能效果或使用步骤之外的额外信息。部分变量(如 allowed_ip_ranges)在示例中引用但未在 variables.tf 中定义,实际使用时需自行补充。