尝试在VM扩展资源中获取VM ID,并且VM是使用for每个循环创建的。请在下面找到代码
resource "azurerm_windows_virtual_machine" "windowsvm" {
for_each = var.virtual_machines
name = each.value.name
resource_group_name = data.azurerm_resource_group.LBS_rg.name
location = data.azurerm_resource_group.LBS_rg.location
size = each.value.size
admin_username = each.value.admin_username
admin_password = each.value.admin_password
resource "azurerm_virtual_machine_extension" "vm-extensions" {
for_each = var.vm-ext
name = each.value.name
virtual_machine_id = azurerm_windows_virtual_machine.windowsvm[each.value.virtual_machines_name].id
publisher = each.value.publisher #Microsoft.Compute
type = each.value.type #CustomScriptExtension
type_handler_version = each.value.type_handler_version #1.10
字符串
现在,当我在其他资源中创建的VM的ID是VM扩展代码时,它会给我以下错误:-
virtual_machine_id = azurerm_windows_virtual_machine.windowsvm[each.value.virtual_machines_name].id
each.value is object with 4 attributes
This object does not have an attribute named "virtual_machines_name"
型
1条答案
按热度按时间3vpjnl9f1#
我尝试创建一个Azure VM模块,并使用它的所有其他属性,我能够成功地配置需求。
错误消息表明,您在
azurerm_virtual_machine_extension
资源中迭代的对象没有名为virtual_machines_name
的属性。这意味着您的each.value.virtual_machines_name
没有正确引用VM名称。为了克服这个问题,我尝试了一种配置,它可以很好地与预期的相同配置和代码更改一起工作。
我的地形配置:
main.tf:
字符串
请确保在容器blob中上传PowerShell脚本以及该PowerShell脚本的SAS_URL的相关权限。
variables.tf:
型
terraform.tfvars:
型
输出:
的数据
的
的