Не запрашивая дополнительной информации, я предполагаю, что в (${var.k8s_node_fips[count.index]}
) передается пустой массив со значением больше 0 для var.node_root_volume_size_in_gb
и var.number_of_k8s_nodes_no_floating_ip
, что вызывает ошибку при попытке индексации пустой массив для строки, которая требуется для объявления ресурса.
Error: Invalid index
on ../../../modules/kubespray/modules/compute/main.tf line 670, in resource "openstack_compute_floatingip_associate_v2" "k8s_node": 670: floating_ip = "${var.k8s_node_fips[count.index]}" |---------------- | count.index is 0 | var.k8s_node_fips is empty list of dynamic
В соответствии с ошибкой может показаться, что это может быть ошибка интерполяции при ${var.k8s_node_fips[count.index]}
. Кажется, что происходит то, что переменная пуста, но count
установлен в ненулевое число, что приводит к ошибке TF
.
Глядя на исходный код проекта, кажется как переменная count
зависит от var.node_root_volume_size_in_gb
, чтобы быть 0, чтобы быть установленным в 0; в противном случае для счетчика будет установлено значение var.number_of_k8s_nodes_no_floating_ip
.
Фрагмент, в котором ошибка, по-видимому, возникает при:
resource "openstack_compute_instance_v2" "k8s_node_no_floating_ip_custom_volume_size" {
name = "${var.cluster_name}-k8s-node-nf-${count.index+1}"
count = "${var.node_root_volume_size_in_gb > 0 ? var.number_of_k8s_nodes_no_floating_ip : 0}"
availability_zone = "${element(var.az_list, count.index)}"
image_name = "${var.image}"
flavor_id = "${var.flavor_k8s_node}"
key_pair = "${openstack_compute_keypair_v2.k8s.name}"
block_device {
uuid = "${data.openstack_images_image_v2.vm_image.id}"
source_type = "image"
volume_size = "${var.node_root_volume_size_in_gb}"
boot_index = 0
destination_type = "volume"
delete_on_termination = true
}
Надеюсь, это поможет