无法通过Terraform创建Cloud SQL实例

问题描述

我想在连接到主机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

解决方法

几种可能性:

  1. Cloud SQL API超时可能已经触发,但该过程仍在进行。在运行带有大型数据转储文件的gcloud sql import sql命令时遇到了这种情况。控制台中的“磁盘使用情况”监视表明我遇到了“超出超时”错误,但该过程仍在继续。
  2. 与IAC相比,GCP实际上没有什么大不了的事是,暂停使用已删除的Cloud SQL实例的名称有10天的暂停时间。因此,如果您的IAC尝试重新创建最近10天内存在的Cloud SQL实例,则可能是问题的一部分。这个问题使我的团队屡屡失败。尝试将datetimestamp作为变量添加到“ google_sql_database_instance”资源名称中。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...