1

我想在项目中创建一个 Cloud SQL 实例,连接到主机 VPC。但是,在运行时,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.

我在这里看到了其他答案,声称通过配置私有服务访问来解决问题,但这似乎并不能解决我的问题。

这是我的 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

4

1 回答 1

0

几种可能性:

  1. 有可能触发了 Cloud SQL API 超时,但该过程仍在进行。我在运行gcloud sql import sql带有大型数据转储文件的命令时遇到了这个问题。我收到“超时”错误,但进程继续,控制台中的磁盘使用情况监控证明了这一点。
  2. GCP 并没有对 IAC 的实际大交易有什么大不了的一点是,有一个 10 天的暂停期来重新使用已删除的 Cloud SQL 实例的名称。因此,如果您的 IAC 尝试重新创建过去 10 天内存在的 Cloud SQL 实例,这可能是问题的一部分。这个问题让我的团队几次翻桌。尝试将日期时间戳作为变量放入“google_sql_database_instance”资源名称中。
于 2020-09-29T22:08:34.377 回答