Terraform google 提供程序模块的文档列出了设置区域的全局选项:
region - (可选)如果未由给定资源指定,则在其下操作的区域。这也可以使用以下任何环境变量来指定(按优先顺序列出):
GOOGLE_REGION
GCLOUD_REGION
CLOUDSDK_COMPUTE_REGION
但是,我发现无法为google_compute_instance或google_compute_disk资源指定区域。如何在同一个项目的不同区域创建多个实例/磁盘?
Terraform google 提供程序模块的文档列出了设置区域的全局选项:
region - (可选)如果未由给定资源指定,则在其下操作的区域。这也可以使用以下任何环境变量来指定(按优先顺序列出):
GOOGLE_REGION
GCLOUD_REGION
CLOUDSDK_COMPUTE_REGION
但是,我发现无法为google_compute_instance或google_compute_disk资源指定区域。如何在同一个项目的不同区域创建多个实例/磁盘?
OP对答案的措辞:
这两种资源类型都位于单个区域内,它们具有相应的zone
字段来指定配置它们的位置。由于区域位于单个区域中,因此为资源指定请求的区域就足够了,因为它也隐式指定了区域。没有为这些资源类型指定区域的选项,因为这与指定区域一起是多余的,并且仅指定区域是不够的。
提供的原始答案:
您链接的两个资源都有zone
标签,这是实例和 VM 磁盘需要放置的位置,因为它们不是区域范围的。区域位于一个区域内,通常每个区域有两个或三个区域。
例如,以 region 为例,us-west1
在此列表中,您可以看到它具有 zone和a
,当在 zone 标记中指定时,需要将其写为、或。b
c
us-west1-a
us-west1-b
us-west1-c
编辑:
此示例显示了一个示例terraform
配置文件,该文件在位于两个不同区域的两个不同区域中创建两个不同的 Compute Engine 虚拟机实例:
provider "google" {
project="YOUR-PROJECT" # Project ID
region="europe-west2" # Default resource region
zone="europe-west2-b" # Default resource zone
}
/*
* Create instance in region Europe West 1, zone b
*/
resource "google_compute_instance" "europe_instance"{
name = "europe-instance-1"
machine_type = "n1-standard-1"
zone = "europe-west1-b"
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
}
}
/*
* Create instance in US West 1, zone c
*/
resource "google_compute_instance" "us_instance"{
name = "us-instance-2"
machine_type = "n1-standard-1"
zone = "us-west1-c"
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
}
}