Как перебрать несколько ресурсов по одному списку? - PullRequest
1 голос
/ 14 мая 2019

Новый для Terraform здесь.Я пытаюсь создать несколько проектов (в Google Cloud), используя Terraform.Проблема в том, что я должен выполнить несколько ресурсов, чтобы полностью настроить проект.Я попытался count, но как я могу связать несколько ресурсов последовательно, используя count?Вот следующие ресурсы, которые мне нужно выполнить для каждого проекта:

  1. Создание проекта с использованием resource "google_project"
  2. Включение службы API с использованием resource "google_project_service"
  3. Присоединение проекта службына хост-проект с использованием resource "google_compute_shared_vpc_service_project" (я использую общий VPC)

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

Например,

Ввод

project_list=["proj-1","proj-2"]

Выполнить последовательно:

resource "google-project" for "proj-1"
resource "google_project_service" for "proj-1"
resource "google_compute_shared_vpc_service_project" for "proj-1"

resource "google-project" for "proj-2"
resource "google_project_service" for "proj-2"
resource "google_compute_shared_vpc_service_project" for "proj-2"

Я использую версию 0.11 Terraform, которая не поддерживает for петли

1 Ответ

1 голос
/ 15 мая 2019

В Terraform вы можете сделать это, используя count и две функции интерполяции, element() и length().

Сначала вы дадите своему модулю входную переменную:

variable "project_list" {
  type = "list"
}

Тогда у вас будет что-то вроде:

resource "google_project" {
  count = "${length(var.project_list)}"
  name  = "${element(var.project_list, count.index)}"
}

resource "google_project_service" {
  count = "${length(var.project_list)}"
  name  = "${element(var.project_list, count.index)}"
}

resource "google_compute_shared_vpc_service_project" {
  count = "${length(var.project_list)}"
  name  = "${element(var.project_list, count.index)}"
}

И, конечно, у вас будет другая конфигурация в этих объявлениях ресурсов.

Обратите внимание, что этот шаблон описан в Terraform Up and Running , Глава 5, и есть другие примеры использования count.index в документах здесь .

...