关于Terraform中azurerm_virtual_machine_extension资源name参数的疑问
关于Terraform azurerm_virtual_machine_extension中
name参数的疑问解答 嘿,我完全懂你为啥被官方文档的描述搞懵了——那句“virtual machine extension peering”绝对是个误导性的表述,甚至大概率是文档里的笔误!
咱们拆解一下这个name参数的真实含义:
- 首先,它就是你要创建的虚拟机扩展资源本身的名称,和“peering(对等连接)”半毛钱关系都没有,应该是文档把“extension”错写成了“peering”。
- 文档后半句“Changing this forces a new resource to be created”才是核心:Azure的虚拟机扩展资源是通过名称唯一标识的,一旦你修改这个
name值,Terraform会判定你需要创建一个全新的扩展,而不是修改已存在的那个——因为Azure本身不允许修改已部署的虚拟机扩展的名称。
举个实际的例子更清楚:
假设你一开始的配置是这样的:
resource "azurerm_virtual_machine_extension" "vm_custom_script" { name = "MyCustomScriptExt" virtual_machine_id = azurerm_virtual_machine.my_vm.id publisher = "Microsoft.Compute" type = "CustomScriptExtension" type_handler_version = "1.10" # 其他扩展配置... }
如果之后你把name改成"MyCustomScriptExt-v2",Terraform会先销毁原来名为MyCustomScriptExt的扩展,再创建一个新的叫MyCustomScriptExt-v2的扩展,而不是直接修改原扩展的名称。
另外补充一点:这个name也是你在Azure Portal或者Azure CLI里能看到的扩展名称,同一台虚拟机上的不同扩展(比如同时有自定义脚本扩展、监控扩展)需要用不同的name来区分,保证唯一性。
内容的提问来源于stack exchange,提问作者phydeauxman
相关产品推荐
相关产品推荐

