我开始学习 Terraform(我想管理我不断增长的 GCP 基础设施)。我正在尝试做一件看似简单的事情——在不同的项目中创建一个虚拟机——但是:
- 我已经配置了一个 VPC,让我们
pre-terra-vpc
在项目中调用它proj1
- 此 VPC 已在使用中,因此我不想在此过程中销毁它
我有一个不同的项目设置,用于学习目的proj2
,我想在 中创建一个简单的 GCP VM proj2
,但从 连接到 VPC proj1
。pre-terra-vpc
在没有 Terraform 破坏并重新创建的情况下,这是否可行pre-terra-vpc
?这安全吗?运行时terraform plan
我有 2 件事要添加...
provider "google" {
...
project = "proj2"
}
resource "google_compute_network" "pre-terra-vpc" {
name = "pre-terra-vpc"
project = "proj1"
}
resource "google_compute_instance" "default" {
...
...
network_interface {
network = "${google_compute_network.pre-terra-vpc.self_link}"
network_ip = ""
access_config {
// Ephemeral IP Address
}
}
此致
卡米尔
答案1
您还可以使用数据源查找来查找当前运行之外创建的内容,它们的行为就像 Terraform 创建它们一样
data "google_compute_network" "pre-terra-vpc" {
name = "pre-terra-vpc"
project = "proj1"
}
然后就可以像这样使用它了。(注意前面的数据而不是资源名称)
${data.google_compute_network.pre-terra-vpc.self_link}
请参阅以下内容
https://www.terraform.io/docs/providers/google/d/datasource_compute_network.html
答案2
您可以将现有资源导入 Terraform 状态,然后 Terraform 就会知道它已经存在,而无需再次尝试(重新)创建它。