Terraform google provider module的文档列出了设置区域的全局选项:
region-(可选)要在其下操作的区域,如果没有指定 给定资源。也可以使用以下任意一种方式指定 环境变量(按优先顺序列出):
GOOGLE_REGION
GCLOUD_REGION
CLOUDSDK_COMPUTE_REGION
但是,我发现没有办法为google_compute_instance或google_compute_disk资源指定区域。如何在同一项目的不同区域中创建多个实例/磁盘?
答案 0 :(得分:1)
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"
}
}