Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何为Terraform GCP模块指定每个资源的不同区域?_Google Cloud Platform_Terraform_Terraform Provider Gcp - Fatal编程技术网

Google cloud platform 如何为Terraform GCP模块指定每个资源的不同区域?

Google cloud platform 如何为Terraform GCP模块指定每个资源的不同区域?,google-cloud-platform,terraform,terraform-provider-gcp,Google Cloud Platform,Terraform,Terraform Provider Gcp,Terraform的文档列出了设置区域的全局选项: 区域-(可选)要在其下操作的区域,如果未由 给定资源。也可以使用以下任意一项来指定 环境变量(按优先顺序列出): 谷歌地区 GCLOUD_地区 CLOUDSDK_计算_区域 但是,我找不到方法来指定区域或资源。如何在同一个项目的不同区域创建多个实例/磁盘?OP的回答: 这两种资源类型都位于一个分区内,它们有一个相应的分区字段来指定在何处提供它们。由于区域位于单个区域中,因此为资源指定请求的区域就足够了,因为它还隐式指定了区域。没有为这些资源类型

Terraform的文档列出了设置区域的全局选项:

区域-(可选)要在其下操作的区域,如果未由 给定资源。也可以使用以下任意一项来指定 环境变量(按优先顺序列出):

谷歌地区

GCLOUD_地区

CLOUDSDK_计算_区域


但是,我找不到方法来指定区域或资源。如何在同一个项目的不同区域创建多个实例/磁盘?

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中的一个示例更新了响应,该示例在不同区域的两个不同区域中创建实例。好的,现在我知道你想说什么了。这很有效,谢谢。如果你不介意的话,我会尝试编辑你的答案,以包含能够反映想法要点的词语。当然,请继续:)