用途
Azure Verified Modules(AVM)参考技能用于帮助开发者学习微软官方 Terraform 模块(Azure Verified Modules)中的模式,从而在构建自定义 Terraform 模块时理解最佳实践、安全模式以及正确的资源配置方式。
适用时机包括:学习 Azure 资源配置的最佳实践、研究微软推荐的安全默认值、理解模块结构与组织模式、查找正确的资源属性与配置,以及为自定义模块开发提供参考架构。
主要能力
AVM 提供以下方面的参考示例:
- 安全优先配置(TLS 版本、加密、网络规则)
- 正确的变量验证模式
- 输出结构与命名约定
- 可选资源的动态块
- 模块组织与文件结构
从 AVM 中可学习的关键要点:
- 安全默认值:始终强制最低 TLS 1.2;默认禁用公共访问;对 PaaS 服务使用私有终结点;启用静态和传输中加密。
- 变量设计:为 Azure 资源约束添加验证;为可选值提供合理默认值;对复杂配置使用对象类型;为所有变量添加描述文档。
- 资源组织:对子资源使用
for_each;为可选配置实现动态块;一致地为所有资源打标签;可预测地命名资源。 - 输出结构:暴露资源 ID;提供连接终结点;适当标记敏感值;使用描述性输出名称。
使用方式
查找 AVM 作为参考的途径:
- 官方 AVM 目录:浏览实现,地址为 https://azure.github.io/Azure-Verified-Modules/
- Terraform Registry:查看源代码,地址为 https://registry.terraform.io/namespaces/Azure
- AVM 模块以 avm- 为前缀,例如 avm-res-storage-storageaccount,可在 https://registry.terraform.io/search/modules?q=avm 搜索。
使用 Terraform MCP 工具:
# 使用 terraform MCP 查找相关 AVM 模块
search_modules("azure storage account verified")
# 查看 AVM 实现细节
get_module_details("Azure/avm-res-storage-storageaccount/azurerm")
适用场景
该技能适用于需要编写或改进 Azure Terraform 模块的开发者,尤其是在关注安全默认配置、变量验证、资源组织与输出规范时。可作为自定义模块开发的参考架构。
限制与注意事项
不要通过将 AVM 作为模块调用来复制它,例如:
# 这违背了初衷——只是创建了一个包装器
module "storage_wrapper" {
source = "Azure/avm-res-storage-storageaccount/azurerm"
version = "0.2.0"
name = var.name
}
应当学习模式并直接实现资源,例如:
# 这才是我们想要的——使用 AVM 模式的实际资源
resource "azurerm_storage_account" "this" {
name = var.name
resource_group_name = var.resource_group_name
location = var.location
# 使用从 AVM 学到的安全模式
min_tls_version = "TLS1_2"
https_traffic_only_enabled = true
}
更多详细代码示例、安全模式和模块模板,请参阅参考指南。