我的基础设施由一个主机项目和几个使用其共享VPC的 服务项目我重构了基础结构的 基础设施的创建顺序是: 在主机目录的 当我在服务项目中提到共享专有网络时,就会出现这个问题。 在 如何从服务项目中的另一个目录引用主机项目ID? 我已经考虑过使用Ouput值和数据源: 在声明为输出的 但后来我不知道如何在 我已经考虑过数据源,并在 下一步该怎么做?我缺少什么?.tf
文件,如下所示:├── env
| ├── dev
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
│ ├── pre
│ └── pro
├── host
│ ├── main.tf
│ ├── outputs.tf
│ ├── terraform.tfvars
│ └── variables.tf
└── modules
├── compute
├── network
└── projects
terraform apply
in/hostterraform apply
(例如(main.tf
中,我创建了专有网络并启用了共享专有网络托管:# Creation of the hosted network
resource "google_compute_network" "shared_network" {
name = var.network_name
auto_create_subnetworks = false
project = google_compute_shared_vpc_host_project.host_project.project
mtu = "1460"
}
# Enable shared VPC hosting in the host project.
resource "google_compute_shared_vpc_host_project" "host_project" {
project = google_project.host_project.project_id
depends_on = [google_project_service.host_project]
}
env/dev/
的main.tf
中,我设置了以下内容:resource "google_compute_shared_vpc_service_project" "service_project_1" {
host_project = google_project.host_project.project_id
service_project = google_project.service_project_1.project_id
depends_on = [
google_compute_shared_vpc_host_project.host_project,
google_project_service.service_project_1,
]
}
问题
到目前为止我已经尝试了什么
host/outputs.tf
中,项目ID为:output "project_id" {
value = google_project.host_project.project_id
}
env/dev/main.tf
中实现这个输出env/dev/main.tf
中获取主机项目ID。但是,为了获取它,我需要它的名称(如果必须硬编码,这就破坏了以编程方式提供它的目的(。
env/dev
文件夹下的文件看不到上面的任何内容,只能看到任何引用的模块
您可以将host
文件夹重构为一个模块,以允许访问其输出,但这增加了主机在破坏开发环境时被破坏的风险
我会在创建主机并将其管道传输到文本文件或环境变量后尝试运行terraform output -raw project_id
。然后使用它作为新的"0"的输入;主机_项目";或"env/dev"部署中的类似变量。