我有一个问题,我在从Kubespray项目构建模块时陷入困境。
我有以下文件夹结构:
terraform/
modules/
kubespray/
modules/
compute/
ips/
network/
main.tf
variables.tf
roles/
kubespray/
terraform_setup/
main.tf
在kubespray/main.tf
模块中传递了一些变量:
module "ips" {
source = "./modules/ips"
number_of_k8s_masters = "${var.number_of_k8s_masters}"
number_of_k8s_masters_no_etcd = "${var.number_of_k8s_masters_no_etcd}"
number_of_k8s_nodes = "${var.number_of_k8s_nodes}"
floatingip_pool = "${var.floatingip_pool}"
number_of_bastions = "${var.number_of_bastions}"
external_net = "${var.external_net}"
network_name = "${var.network_name}"
router_id = "${module.network.router_id}"
}
module "compute" {
source = "./modules/compute"
...
k8s_master_fips = "${module.ips.k8s_master_fips}"
k8s_master_no_etcd_fips = "${module.ips.k8s_master_no_etcd_fips}"
k8s_node_fips = "${module.ips.k8s_node_fips}"
bastion_fips = "${module.ips.bastion_fips}"
...
}
output "private_subnet_id" {
value = "${module.network.subnet_id}"
}
output "floating_network_id" {
value = "${var.external_net}"
}
output "router_id" {
value = "${module.network.router_id}"
}
output "k8s_master_fips" {
value = "${concat(module.ips.k8s_master_fips, module.ips.k8s_master_no_etcd_fips)}"
}
output "k8s_node_fips" {
value = "${module.ips.k8s_node_fips}"
}
output "bastion_fips" {
value = "${module.ips.bastion_fips}"
}
如果我从子模块内部运行我的 terraform init/applymodules/kubespray/
它工作正常
如果我从我那里role/kubespray
跑
module "kubespray" {
source = "../../../modules/kubespray"
providers = {
openstack.src = openstack
}
}
它失败了
错误:无效索引
在 ../../../modules/kubespray/modules/compute/main.tf 第 670 行,资源“openstack_compute_floatingip_associate_v2”“k8s_node”:670:floating_ip =“${var.k8s_node_fips[count.index]}” |---------------- | count.index 为 0 | var.k8s_node_fips 是动态的空列表
帮助将非常感激