терраформа; назначение избыточного "именного" ключа? - PullRequest
0 голосов
/ 07 мая 2020

Глядя на определение ресурса здесь: https://www.terraform.io/docs/configuration/resources.html, вы видите такие примеры:

resource "aws_iam_role" "example" {
  name = "example"

  # assume_role_policy is omitted for brevity in this example. See the
  # documentation for aws_iam_role for a complete example.
  assume_role_policy = "..."
}

Первый example в верхней строке называется " name "и может использоваться для ссылки, например, aws_iam_role.example. Однако здесь не обсуждается 1) почему существует также ключ с именем «name» и почему он избыточно установлен на ту же строку «example». Какова цель этого внутреннего ключа name = example и каковы здесь лучшие практики?

РЕДАКТИРОВАТЬ: это кажется связанным: https://github.com/hashicorp/terraform/issues/16394

1 Ответ

0 голосов
/ 07 мая 2020

"aws_iam_role" "example" - вы ссылаетесь на этот ресурс в своей конфигурации terraform (например, aws_iam_role.example, должен быть уникальным хотя бы в одном модуле)

name = "example" - это имя вашего ресурса на стороне облака (должен быть уникальным на стороне облака, например, в пределах одного проекта или региона, зависит от провайдера)

В то же время они могут быть разными в вашей конфигурации терраформа, например:

resource "aws_iam_role" "my_role" {
  name = "${terraform.workspace}-example-role"

  # assume_role_policy is omitted for brevity in this example. See the
  # documentation for aws_iam_role for a complete example.
  assume_role_policy = "..."
}

PS: в этом случае (с ресурсом aws_iam_role) аргумент name является необязательным. Если вы пропустите его, вы увидите случайно сгенерированное имя ресурса в консоли AWS.

...