Как вывести все ресурсы одного типа в Terraform? - PullRequest
0 голосов
/ 13 июня 2018

У меня есть набор aws_ecr_repositories, определенный в моем коде Terraform:

resource "aws_ecr_repository" "nginx_images" {
  name = "nginx-test"
}

resource "aws_ecr_repository" "oracle_images" {
  name = "oracle-test"
}

Я хочу иметь вывод, который может перечислить все ресурсы aws_ecr_repository в один вывод.Это то, что я пробовал:

output "ecr_repository_urls" {
  value = "[${aws_ecr_repository.*.repository_url}]"
}

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

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Синтаксис знака Terraform предназначен для отслеживания каждой вещи, созданной ресурсом, с использованием мета-параметра count .

Если вы хотите иметь возможностьПолучите все URL-адреса хранилища, которые вы можете использовать для одного ресурса aws_ecr_repository, и используйте мета-параметр count примерно так:

variable "images" {
  default = [
    "nginx-test",
    "oracle-test",
  ]
}

resource "aws_ecr_repository" "images" {
  count = "${length(var.images)}"
  name  = "${var.images[count.index]}"
}

output "ecr_repository_urls" {
  value = "[${aws_ecr_repository.images.*.repository_url}]"
}
0 голосов
/ 13 июня 2018

Вы можете объединить их вручную в виде списка:

output "ecr_repository_urls" {
  value = ["${aws_ecr_repository.nginx_images.repository_url}", "${aws_ecr_repository.oracle_images.repository_url}"]
}

Хотя это, вероятно, не будет красиво в коде.

Вы также можете сделать что-то вроде этого:

variable "ecr_repos" {
  default = {
    "0" = "foo"
    "1" = "bar"
  }
}

resource "aws_ecr_repository" "images" {
  count = "${length(var.ecr_repos)}"
  name  = "${lookup(var.ecr_repos,count.index)}-test"
}

output "ecr_repository_urls" {
  value = "${aws_ecr_repository.images.*.repository_url}"
}

Но проблема в том, что если порядок списков изменится, он будет воссоздавать ресурсы и становиться действительно ужасно быстрым, поскольку каждому репо присваивается индексный номер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...