如何删除默认 GCP vpc 并将其替换为 terraform?
How do I delete and replace the default GCP vpc with terraform?
Google 建议删除并创建您自己的产品 VPC
此资源管理默认 VPC:https://www.terraform.io/docs/providers/aws/r/default_vpc.html
但我想将不同的 VPC 设置为默认 VPC 并删除自动创建的。
这怎么可能?
在 Terraform 中,您描述了配置的所需状态,因此无法隐式发送“销毁请求”到不受 Terraform 管理的资源。
但是您可以先尝试 importing 它,然后它将由 Terraform 管理,并且由于您不将其包含在 *.tf 文件中,因此应在 terraform apply
步骤中删除默认子网。
default
网络没有任何使其成为默认网络的特定配置。它只是一个始终与新项目一起创建的网络,只要未指定网络(例如,在部署 GAE flex 应用程序时),使用的网络将是名称为 default
的网络.使用 Terraform 创建项目时,可以指定 auto_network_creation = "false"
.
但是,这不会阻止默认网络的创建,它只会在项目完全创建之前将其删除。这意味着,在 Terraform 创建期间,无法创建另一个名为 default
的网络。这必须在创建原始默认网络之后完成,因此,在项目创建之后。
您可以尝试使用 this tutorial 使用 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}"
}
不过我自己试了一下,默认网络还在。
您可以 avoid/skip 通过设置 组织策略约束 .
默认网络创建
gcloud resource-manager org-policies enable-enforce \
constraints/compute.skipDefaultNetworkCreation \
--organization ORGANIZATION_ID
更多详情见Organization Policy Constraints and Using boolean constraints in organization policy
设置 属性 auto_create_network = "false" 并提及结算帐户 ID,同时按照以下代码片段创建 GCP 项目,确保删除默认网络。
resource "google_project" "project" {
name = "test"
project_id = "test-523"
billing_account = "xxxxx"
auto_create_network = "false"
}
Google 建议删除并创建您自己的产品 VPC
此资源管理默认 VPC:https://www.terraform.io/docs/providers/aws/r/default_vpc.html
但我想将不同的 VPC 设置为默认 VPC 并删除自动创建的。
这怎么可能?
在 Terraform 中,您描述了配置的所需状态,因此无法隐式发送“销毁请求”到不受 Terraform 管理的资源。
但是您可以先尝试 importing 它,然后它将由 Terraform 管理,并且由于您不将其包含在 *.tf 文件中,因此应在 terraform apply
步骤中删除默认子网。
default
网络没有任何使其成为默认网络的特定配置。它只是一个始终与新项目一起创建的网络,只要未指定网络(例如,在部署 GAE flex 应用程序时),使用的网络将是名称为 default
的网络.使用 Terraform 创建项目时,可以指定 auto_network_creation = "false"
.
但是,这不会阻止默认网络的创建,它只会在项目完全创建之前将其删除。这意味着,在 Terraform 创建期间,无法创建另一个名为 default
的网络。这必须在创建原始默认网络之后完成,因此,在项目创建之后。
您可以尝试使用 this tutorial 使用 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}"
}
不过我自己试了一下,默认网络还在。
您可以 avoid/skip 通过设置 组织策略约束 .
默认网络创建gcloud resource-manager org-policies enable-enforce \
constraints/compute.skipDefaultNetworkCreation \
--organization ORGANIZATION_ID
更多详情见Organization Policy Constraints and Using boolean constraints in organization policy
设置 属性 auto_create_network = "false" 并提及结算帐户 ID,同时按照以下代码片段创建 GCP 项目,确保删除默认网络。
resource "google_project" "project" {
name = "test"
project_id = "test-523"
billing_account = "xxxxx"
auto_create_network = "false"
}