2

Google 建议删除并创建您自己的产品 VPC

此资源管理默认 VPC:https ://www.terraform.io/docs/providers/aws/r/default_vpc.html

但我想将不同的 VPC 设置为默认值并删除自动创建的 VPC。

这怎么可能?

4

4 回答 4

6

您可以通过设置组织策略约束来避免/跳过默认网络创建。

gcloud  resource-manager org-policies enable-enforce \
   constraints/compute.skipDefaultNetworkCreation \
   --organization ORGANIZATION_ID

组织策略约束和在组织策略中使用布尔约束中的更多详细信息

于 2019-11-17T11:30:16.073 回答
4

default网络没有任何使其成为默认网络的特定配置。它只是一个始终与新项目一起创建的网络,并且每当未指定网络时(例如,在部署 GAE flex 应用程序时),使用的网络将是名称为 的网络default。使用 Terraform 创建项目时,可以指定auto_network_creation = "false".

但是,这不会阻止默认网络的创建,它只会在项目完全创建之前将其删除。这意味着,在 Terraform 创建期间,无法创建另一个名为default. 这必须在创建原始默认网络之后完成,因此,在项目创建之后。

您可以尝试使用本教程使用 Terraform 创建项目。下一个片段是教程的一部分,我在其中包含了删除项目创建时的默认网络的行。

variable "project_name" {}
variable "billing_account" {}
variable "org_id" {}
variable "region" {}

provider "google" {
 region = "${var.region}"
}

resource "random_id" "id" {
 byte_length = 4
 prefix      = "${var.project_name}-"
}

resource "google_project" "project" {
 name            = "${var.project_name}"
 project_id      = "${random_id.id.hex}"
 billing_account = "${var.billing_account}"
 org_id          = "${var.org_id}"
 auto_create_network = "false" //This is supposed to delete default network on project creation
}

resource "google_project_services" "project" {
 project = "${google_project.project.project_id}"
 services = [
   "compute.googleapis.com"
 ]
}

output "project_id" {
 value = "${google_project.project.project_id}"
}

尽管如此,我自己尝试过,默认网络仍然存在。

于 2019-02-11T13:46:15.157 回答
1

在 Terraform 中,您描述了配置的所需状态,不可能将“销毁请求”隐式发送到不受 Terraform 管理的资源。

但是,您可以先尝试导入它,然后它将由 Terraform 管理,并且由于您未将其包含在 *.tf 文件中,因此应在terraform apply步骤中删除默认子网。

于 2019-02-11T11:30:19.397 回答
1

设置属性 auto_create_network = "false" 并提及结算帐户 ID,同时按照以下代码段创建 GCP 项目,可确保删除默认网络。

resource "google_project" "project" {
    name            = "test"
    project_id      = "test-523"
    billing_account = "xxxxx"
    auto_create_network = "false"
}
于 2020-03-31T05:30:03.723 回答