Google cloud platform 如何为Terraform GCP模块指定每个资源的不同区域?
Terraform的文档列出了设置区域的全局选项: 区域-(可选)要在其下操作的区域,如果未由 给定资源。也可以使用以下任意一项来指定 环境变量(按优先顺序列出): 谷歌地区 GCLOUD_地区 CLOUDSDK_计算_区域Google cloud platform 如何为Terraform GCP模块指定每个资源的不同区域?,google-cloud-platform,terraform,terraform-provider-gcp,Google Cloud Platform,Terraform,Terraform Provider Gcp,Terraform的文档列出了设置区域的全局选项: 区域-(可选)要在其下操作的区域,如果未由 给定资源。也可以使用以下任意一项来指定 环境变量(按优先顺序列出): 谷歌地区 GCLOUD_地区 CLOUDSDK_计算_区域 但是,我找不到方法来指定区域或资源。如何在同一个项目的不同区域创建多个实例/磁盘?OP的回答: 这两种资源类型都位于一个分区内,它们有一个相应的分区字段来指定在何处提供它们。由于区域位于单个区域中,因此为资源指定请求的区域就足够了,因为它还隐式指定了区域。没有为这些资源类型
但是,我找不到方法来指定区域或资源。如何在同一个项目的不同区域创建多个实例/磁盘?OP的回答: 这两种资源类型都位于一个分区内,它们有一个相应的
分区
字段来指定在何处提供它们。由于区域位于单个区域中,因此为资源指定请求的区域就足够了,因为它还隐式指定了区域。没有为这些资源类型指定区域的选项,因为这与指定区域是多余的,仅指定区域是不够的
提供的原始答案:
您链接的两个资源都有区域
标记,这是实例和VM磁盘需要位于的位置,因为它们不是区域范围的。分区位于一个区域内,通常每个区域有两个或三个分区
例如,以地区us-west1
为例,在中,您可以看到它具有分区a
、b
和c
,当在分区标签中指定时,需要将其写为us-west1-a
、us-west1-b
或us-west1-c
编辑:
此示例显示了一个示例terraform
配置文件,该文件在两个不同区域中创建了两个不同的计算引擎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"
}
}
我想你不明白我的问题。我想创建一个多区域集群,让VM(实例+磁盘)分别位于不同的区域。一个VM位于一个区域,另一个VM位于另一个区域,依此类推。这与区域宽度或区域无关。我的意思是,没有指定实例将运行的“区域”这样的事情,因为实例不是区域范围的,而是驻留在单个区域中。我用terraform中的一个示例更新了响应,该示例在不同区域的两个不同区域中创建实例。好的,现在我知道你想说什么了。这很有效,谢谢。如果你不介意的话,我会尝试编辑你的答案,以包含能够反映想法要点的词语。当然,请继续:)