2

Terraform google 提供程序模块的文档列出了设置区域的全局选项:

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

GOOGLE_REGION

GCLOUD_REGION

CLOUDSDK_COMPUTE_REGION

但是,我发现无法为google_compute_instancegoogle_compute_disk资源指定区域。如何在同一个项目的不同区域创建多个实例/磁盘?

4

1 回答 1

1

OP对答案的措辞:

这两种资源类型都位于单个区域内,它们具有相应的zone字段来指定配置它们的位置。由于区域位于单个区域中,因此为资源指定请求的区域就足够了,因为它也隐式指定了区域。没有为这些资源类型指定区域的选项,因为这与指定区域一起是多余的,并且仅指定区域是不够的。

提供的原始答案:

您链接的两个资源都有zone标签,这是实例和 VM 磁盘需要放置的位置,因为它们不是区域范围的。区域位于一个区域内,通常每个区域有两个或三个区域。

例如,以 region 为例,us-west1此列表中,您可以看到它具有 zone和a,当在 zone 标记中指定时,需要将其写为、或。bcus-west1-aus-west1-bus-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"
        }

}
于 2019-01-11T15:22:41.797 回答