问题描述
我想在连接到主机VPC的项目中创建Cloud SQL实例。但是,在运行terraform apply
时,每次都会得到相同的结果:
google_sql_database_instance.default: Still creating... [1m20s elapsed]
google_sql_database_instance.default: Still creating... [1m30s elapsed]
google_sql_database_instance.default: Still creating... [1m40s elapsed]
google_sql_database_instance.default: Still creating... [1m50s elapsed]
Error: Error waiting for Create Instance:
Error: Process completed with exit code 1.
我在这里看到other answers声称该问题通过配置私有服务访问而消失了,但这似乎不能解决我的问题。
这是我的Terraform文件,其中包含相关部分:
google_compute_global_address" "private_ip_address" {
provider = google-beta
project = data.google_compute_subnetwork.subnet.project
name = "private-ip-address"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = data.google_compute_network.shared-vpc.id
}
resource "google_service_networking_connection" "private_vpc_connection" {
provider = google-beta
network = data.google_compute_network.shared-vpc.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}
resource "google_sql_database_instance" "default" {
provider = google-beta
project = module.base_shared_vpc_project.project_id
name = var.db_name
database_version = "MYSQL_5_7"
region = "us-east1"
settings {
tier = "db-f1-micro"
availability_type = "ZONAL"
location_preference {
zone = "us-east1-b"
}
ip_configuration {
ipv4_enabled = false
private_network = data.google_compute_network.shared-vpc.id
}
}
depends_on = [google_service_networking_connection.private_vpc_connection]
}
最后一点信息设置TF_LOG=DEBUG
仅提供以下附加消息:Retry Transport: Stopping retries,last request failed with non-retryable error
解决方法
几种可能性:
- Cloud SQL API超时可能已经触发,但该过程仍在进行。在运行带有大型数据转储文件的
gcloud sql import sql
命令时遇到了这种情况。控制台中的“磁盘使用情况”监视表明我遇到了“超出超时”错误,但该过程仍在继续。 - 与IAC相比,GCP实际上没有什么大不了的事是,暂停使用已删除的Cloud SQL实例的名称有10天的暂停时间。因此,如果您的IAC尝试重新创建最近10天内存在的Cloud SQL实例,则可能是问题的一部分。这个问题使我的团队屡屡失败。尝试将datetimestamp作为变量添加到“ google_sql_database_instance”资源名称中。