Google cloud platform 错误-缺少资源实例键:因为google“U compute”实例有;计数“;设置时,必须在特定实例上访问其属性
我试图将模块“microservice instance”中创建的google计算实例的mat_ip传递给另一个模块“database”。由于我创建了多个实例,所以模块“microservice instance”中的输出变量出现以下错误 我已经研究了以下内容,并使用相同的方法访问属性,但它不起作用。这是代码- main.tf ./modules/microservice instance/microservice-instance.tfGoogle cloud platform 错误-缺少资源实例键:因为google“U compute”实例有;计数“;设置时,必须在特定实例上访问其属性,google-cloud-platform,terraform,google-compute-engine,terraform-provider-gcp,Google Cloud Platform,Terraform,Google Compute Engine,Terraform Provider Gcp,我试图将模块“microservice instance”中创建的google计算实例的mat_ip传递给另一个模块“database”。由于我创建了多个实例,所以模块“microservice instance”中的输出变量出现以下错误 我已经研究了以下内容,并使用相同的方法访问属性,但它不起作用。这是代码- main.tf ./modules/microservice instance/microservice-instance.tf resource "google_comput
resource "google_compute_instance" "apps" {
count = var.appserver_count
name = "apps-${count.index + 1}"
# name = "apps-${random_id.app_name_suffix.hex}"
machine_type = "f1-micro"
boot_disk {
initialize_params {
image = "ubuntu-os-cloud/ubuntu-1804-lts"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral IP
}
}
}
./modules/microservice实例/ms-outputs.tf
output "nat_ip" {
value = google_compute_instance.apps.network_interface[*].access_config[0].nat_ip
}
./modules/database/database.tf
resource "random_id" "db_name_suffix" {
byte_length = 4
}
resource "google_sql_database_instance" "postgres" {
name = "postgres-instance-${random_id.db_name_suffix.hex}"
database_version = "POSTGRES_11"
settings {
tier = "db-f1-micro"
ip_configuration {
dynamic "authorized_networks" {
for_each = var.nat_ip
# iterator = ip
content {
# value = ni.0.access_config.0.nat_ip
value = each.key
}
}
}
}
}
您正在创建
var.appserver\u count
google\u compute\u实例的数量。因此,您将有:
google_compute_instance.apps[0]
google_compute_instance.apps[1]
...
google_compute_instance.apps[var.appserver_count - 1]
因此,在输出中
,而不是:
output "nat_ip" {
value = google_compute_instance.apps.network_interface[*].access_config[0].nat_ip
}
您必须使用[*]
引用单个应用程序
资源或所有资源,例如:
output "nat_ip" {
value = google_compute_instance.apps[*].network_interface[*].access_config[0].nat_ip
}
我也试过了,但得到了如下不同的错误。。。错误:模块“数据库”中main.tf行17上不支持的属性:17:nat_ip=module.microservice-instance.nat_ip此值没有任何属性。@Amit我不确定您想要实现什么。您的
输出“nat\u ip”
将始终返回多个nat\u ip
s。但是您的模块“database”
似乎只需要一个nat\u ip
?我需要将这些多个nat\u ip列表返回到database模块,并循环(请参见database.tf中的每个nat\u)以设置db实例的授权网络。
output "nat_ip" {
value = google_compute_instance.apps.network_interface[*].access_config[0].nat_ip
}
output "nat_ip" {
value = google_compute_instance.apps[*].network_interface[*].access_config[0].nat_ip
}