Как узнать, какой атрибут использовать в этом коде terraform? - PullRequest
0 голосов
/ 08 июля 2019

Когда я запускаю terraform plan, я получаю эту ошибку:

Ошибка: ошибка загрузки /Users/antkong/infrastructure/windows-server/main.tf: Ошибка чтения конфиг для aws_instance [работник]: aws_iam_role.windows_server_role: переменные ресурса должны состоять из трех частей: TYPE.NAME.ATTR в:

вот соответствующий код

resource "aws_instance" "worker" {
  ami                  = "${data.aws_ami.windows_server.image_id}"
  instance_type        = "${var.instance}"
  iam_instance_profile = "${aws_iam_role.windows_server_role}"  // <- ERROR here
  get_password_data    = "true"

Я думаю, чтобы исправить это, я могу использовать

iam_instance_profile = "${aws_iam_role.windows_server_role.id}" 

или

iam_instance_profile = "${aws_iam_role.windows_server_role.arn}" 

однако в документации это не очевидно.

Как я могу это выяснить, кроме появления ошибки во время выполнения?

1 Ответ

1 голос
/ 08 июля 2019

Согласованная документация может быть лучше. Я считаю, что вам нужно ссылаться на aws_iam_instance_profile, а не aws_iam_role. Вот ссылка на документ - https://www.terraform.io/docs/providers/aws/r/iam_instance_profile.html.

Код будет выглядеть примерно так:

resource "aws_instance" "worker" {
  ami                  = "${data.aws_ami.windows_server.image_id}"
  instance_type        = "${var.instance}"
  iam_instance_profile = "${aws_iam_instance_profile.windows_server.name}"
  get_password_data    = "true"
....
}

Копирование определения профиля экземпляра из общей ссылки:

resource "aws_iam_instance_profile" "windows_server" {
  name = "windows_server_instance_profile"
  role = "${aws_iam_role.windows_server.name}"
}

resource "aws_iam_role" "windows_server" {
  name = "windows_server_role"
  path = "/"

  assume_role_policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Principal": {
               "Service": "ec2.amazonaws.com"
            },
            "Effect": "Allow",
            "Sid": ""
        }
    ]
}
EOF
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...