terraform 报告错误 "cannot use element function with an empty list"
terraform reporting error "cannot use element function with an empty list"
我的网卡创建代码如下:
resource "azurerm_network_interface" "tf-ni-test" {
count = "${var.count_sss_vm}"
name = "${var.sss_base_hostname}${format("%02d",count.index+1)}-nic01"
#location = "${data.azurerm_resource_group.tf-rg-test-external.location}"
location = "${var.location}"
resource_group_name = "${data.azurerm_resource_group.tf-rg-test-external.name}"
ip_configuration {
name = "${var.sss_base_hostname}${format("%02d",count.index+1)}-iip01"
subnet_id = "${data.azurerm_subnet.tf-sn-test.id}"
private_ip_address_allocation = "${var.env=="msdn"?"dynamic":"static"}"
#private_ip_address = "10.112.2.${count.index+10}"
public_ip_address_id = "${element(azurerm_public_ip.tf-pip-test.*.id,count.index+1)}"
}
}
VM创建代码如下:
resource "azurerm_virtual_machine" "tf-vm-test" {
count = "${var.count_sss_vm}"
name = "${var.sss_base_hostname}${format("%02d",count.index+1)}"
location = "${var.location}"
#location = "${data.azurerm_resource_group.tf-rg-test-external.location}"
resource_group_name = "${data.azurerm_resource_group.tf-rg-test-external.name}"
network_interface_ids = ["${element(azurerm_network_interface.tf-ni-test.*.id, count.index)}"]
vm_size = "${var.sss_vm_size}"
.
.
.
}
我是 运行 terraform 计划,命令如下:
terraform plan -var "application_nsg=test-sss" -var "count_sss_vm=2" -var "env=msdn" -var "username=devopsadmin" -var "password=Angular1@#$" -var "sss_base_hostname=testsss" -var "sss_vm_size=Standard_B2s" -var "storage_account_suffix=sta" -var "win_image_offer=Windows" -var "win_image_publisher=microsoftvisualstudio" -var "win_sku=Windows-10-N-x64" -var "location=australiaeast"
想知道为什么报错以及如何解决。相同的代码以前也有。这是因为 TF v0.12 吗?
我在 github 上发现了类似的问题,实际上使用的是 Hashicorp 给出的相同方法:
https://github.com/terraform-providers/terraform-provider-azurerm/issues/3979
我收到如下错误:
Error: Error in function call
on frednxt_tpi_standalone.tf line 123, in resource "azurerm_virtual_machine" "tf-vm-test":
123: network_interface_ids = ["${element(azurerm_network_interface.tf-ni-test.*.id, count.index)}"]
|----------------
| azurerm_network_interface.tf-ni-test is empty tuple
| count.index is 0
Call to function "element" failed: cannot use element function with an empty
list.
Error: Error in function call
on frednxt_tpi_standalone.tf line 123, in resource "azurerm_virtual_machine" "tf-vm-test":
123: network_interface_ids = ["${element(azurerm_network_interface.tf-ni-test.*.id, count.index)}"]
|----------------
| azurerm_network_interface.tf-ni-test is empty tuple
| count.index is 1
Call to function "element" failed: cannot use element function with an empty
list.
不确定,但我在使用 0.12 版本的 terraform 时重现了错误。当我使用命令 terraform 0.12upgrade
升级 Terraform 时,它工作正常。而且我也找不到你提供的代码中的问题。
所以你可以删除状态文件,升级 Terraform 然后再试一次。
我的网卡创建代码如下:
resource "azurerm_network_interface" "tf-ni-test" {
count = "${var.count_sss_vm}"
name = "${var.sss_base_hostname}${format("%02d",count.index+1)}-nic01"
#location = "${data.azurerm_resource_group.tf-rg-test-external.location}"
location = "${var.location}"
resource_group_name = "${data.azurerm_resource_group.tf-rg-test-external.name}"
ip_configuration {
name = "${var.sss_base_hostname}${format("%02d",count.index+1)}-iip01"
subnet_id = "${data.azurerm_subnet.tf-sn-test.id}"
private_ip_address_allocation = "${var.env=="msdn"?"dynamic":"static"}"
#private_ip_address = "10.112.2.${count.index+10}"
public_ip_address_id = "${element(azurerm_public_ip.tf-pip-test.*.id,count.index+1)}"
}
}
VM创建代码如下:
resource "azurerm_virtual_machine" "tf-vm-test" {
count = "${var.count_sss_vm}"
name = "${var.sss_base_hostname}${format("%02d",count.index+1)}"
location = "${var.location}"
#location = "${data.azurerm_resource_group.tf-rg-test-external.location}"
resource_group_name = "${data.azurerm_resource_group.tf-rg-test-external.name}"
network_interface_ids = ["${element(azurerm_network_interface.tf-ni-test.*.id, count.index)}"]
vm_size = "${var.sss_vm_size}"
.
.
.
}
我是 运行 terraform 计划,命令如下:
terraform plan -var "application_nsg=test-sss" -var "count_sss_vm=2" -var "env=msdn" -var "username=devopsadmin" -var "password=Angular1@#$" -var "sss_base_hostname=testsss" -var "sss_vm_size=Standard_B2s" -var "storage_account_suffix=sta" -var "win_image_offer=Windows" -var "win_image_publisher=microsoftvisualstudio" -var "win_sku=Windows-10-N-x64" -var "location=australiaeast"
想知道为什么报错以及如何解决。相同的代码以前也有。这是因为 TF v0.12 吗?
我在 github 上发现了类似的问题,实际上使用的是 Hashicorp 给出的相同方法: https://github.com/terraform-providers/terraform-provider-azurerm/issues/3979
我收到如下错误:
Error: Error in function call
on frednxt_tpi_standalone.tf line 123, in resource "azurerm_virtual_machine" "tf-vm-test":
123: network_interface_ids = ["${element(azurerm_network_interface.tf-ni-test.*.id, count.index)}"]
|----------------
| azurerm_network_interface.tf-ni-test is empty tuple
| count.index is 0
Call to function "element" failed: cannot use element function with an empty
list.
Error: Error in function call
on frednxt_tpi_standalone.tf line 123, in resource "azurerm_virtual_machine" "tf-vm-test":
123: network_interface_ids = ["${element(azurerm_network_interface.tf-ni-test.*.id, count.index)}"]
|----------------
| azurerm_network_interface.tf-ni-test is empty tuple
| count.index is 1
Call to function "element" failed: cannot use element function with an empty
list.
不确定,但我在使用 0.12 版本的 terraform 时重现了错误。当我使用命令 terraform 0.12upgrade
升级 Terraform 时,它工作正常。而且我也找不到你提供的代码中的问题。
所以你可以删除状态文件,升级 Terraform 然后再试一次。