Как указать разные регионы для каждого ресурса для модуля Terraform GCP? - PullRequest
0 голосов
/ 11 января 2019

В документации для Terraform модуля провайдера Google перечислены глобальные опции для установки региона:

регион - (Необязательно) Регион для работы, если не указано данный ресурс. Это также может быть указано с помощью любого из следующих Переменные среды (перечислены в порядке приоритета):

GOOGLE_REGION

GCLOUD_REGION

CLOUDSDK_COMPUTE_REGION

Однако я не нашел способа указать регион для ресурса google_compute_instance или google_compute_disk . Как создать несколько экземпляров / дисков в разных регионах в рамках одного проекта?

1 Ответ

0 голосов
/ 11 января 2019

ОП формулирует ответ:

Оба этих типа ресурсов расположены в одной зоне, они имеют поле zone соответственно, чтобы указать, где их предоставлять. Поскольку зона расположена в одном регионе, достаточно указать запрошенную зону для ресурса, поскольку она также неявно указывает регион. Невозможно указать регион для этих типов ресурсов, поскольку это будет избыточно вместе с указанием зоны, и указание только региона будет недостаточным.

Оригинальный ответ предоставлен:

Оба ресурса, которые вы связали, имеют тег zone, в котором должны быть расположены экземпляры и диски виртуальных машин, поскольку они не относятся к региону. Зоны расположены внутри региона, и обычно для каждой области есть две или три зоны.

Например, взяв регион us-west1, в этом списке вы можете видеть, что он имеет зоны a, b и c, которые при указании в теге зоны нужны записывается как us-west1-a, us-west1-b или us-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"
        }

}
...