如何为 Terraform GCP 模块的每个资源指定不同的区域?
How do I specify different regions per resource for Terraform GCP module?
Terraform google provider module 的文档列出了设置区域的全局选项:
region - (Optional) The region to operate under, if not specified by a
given resource. This can also be specified using any of the following
environment variables (listed in order of precedence):
GOOGLE_REGION
GCLOUD_REGION
CLOUDSDK_COMPUTE_REGION
但是,我找不到为 google_compute_instance or a google_compute_disk 资源指定区域的方法。如何在同一项目的不同区域创建多个 instances/disks?
OP 的回答措辞:
这两种资源类型都位于一个区域内,它们有一个相应的 zone
字段来指定在何处提供它们。由于区域位于单个区域中,因此为资源指定请求的区域就足够了,因为它也隐式指定了区域。没有为这些资源类型指定区域的选项,因为这与指定区域是多余的,并且仅指定区域是不够的。
提供的原始答案:
您链接的两个资源都有 zone
标记,这是需要放置实例和 VM 磁盘的位置,因为它们不是区域范围的。区域位于一个区域内,通常每个区域有两个或三个区域。
例如,以区域 us-west1
为例,在 this list 中,您可以看到它具有区域 a
、b
和 c
,这在区域标签中指定时需要写成us-west1-a
、us-west1-b
或us-west1-c
。
编辑:
此示例显示了一个示例 terraform
配置文件,它在位于两个不同区域的两个不同区域中创建了两个不同的 Compute Engine VM 实例:
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"
}
}
Terraform google provider module 的文档列出了设置区域的全局选项:
region - (Optional) The region to operate under, if not specified by a given resource. This can also be specified using any of the following environment variables (listed in order of precedence):
GOOGLE_REGION
GCLOUD_REGION
CLOUDSDK_COMPUTE_REGION
但是,我找不到为 google_compute_instance or a google_compute_disk 资源指定区域的方法。如何在同一项目的不同区域创建多个 instances/disks?
OP 的回答措辞:
这两种资源类型都位于一个区域内,它们有一个相应的 zone
字段来指定在何处提供它们。由于区域位于单个区域中,因此为资源指定请求的区域就足够了,因为它也隐式指定了区域。没有为这些资源类型指定区域的选项,因为这与指定区域是多余的,并且仅指定区域是不够的。
提供的原始答案:
您链接的两个资源都有 zone
标记,这是需要放置实例和 VM 磁盘的位置,因为它们不是区域范围的。区域位于一个区域内,通常每个区域有两个或三个区域。
例如,以区域 us-west1
为例,在 this list 中,您可以看到它具有区域 a
、b
和 c
,这在区域标签中指定时需要写成us-west1-a
、us-west1-b
或us-west1-c
。
编辑:
此示例显示了一个示例 terraform
配置文件,它在位于两个不同区域的两个不同区域中创建了两个不同的 Compute Engine VM 实例:
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"
}
}