【发布时间】:2020-10-04 01:18:01
【问题描述】:
对于,我需要能够在 GCP 中配置多个 SQL 数据库。这些数据库还需要位于具有私有 IP 地址的 VPC 上。
配置
resource "google_compute_network" "container_network" {
name = "container-network"
}
resource "google_compute_global_address" "sql" {
name = "sql-private-ip"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = google_compute_network.container_network.self_link
}
resource "google_service_networking_connection" "sql" {
network = google_compute_network.container_network.self_link
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.sql.name]
}
resource "google_sql_database_instance" "master" {
provider = google-beta
count = 1
database_version = "MYSQL_5_7"
depends_on = [google_service_networking_connection.sql]
settings {
tier = "db-f1-micro"
ip_configuration {
ipv4_enabled = false
private_network = google_compute_network.container_network.id
}
}
}
当我将此配置用于单个数据库时,效果很好。如果我然后更改count = 2,那也可以。但是,如果我破坏基础设施并设置count = 2,它就会失败。
Error: Error waiting for Create Instance: Failed to create subnetwork. <eye3 title='INVALID_ARGUMENT'/> generic::INVALID_ARGUMENT: New subnetwork overlaps with an IP range (10.28.0.0/24) in one of the active peers of an active peer (consumer-311061328248).
对我来说,这似乎是同时创建两个数据库并尝试分配相同的 IP 范围。
有没有办法按顺序或同时创建数据库?我怀疑这将是一个 Terraform 问题,而不是 GCP 问题,尽管我对此持开放态度。
【问题讨论】:
-
一个选项是有两个
resource "google_sql_database_instance"并在第二个到第一个上设置一个depends_on,... 可能是基于计数的条件depends_on
标签: google-cloud-platform terraform terraform-provider-gcp