Выходы не отображаются при использовании модулей

У меня есть outputs.tf файл в каталоге моего модуля. И у меня есть Main.tf файл. Когда я создаю ресурс и Terraform Apply, выходные данные не отображаются. Однако, если я не использую модули и создаю свои ресурсы строго из Main.tf файл, вывод показывает нормально. Есть ли что-то другое, что мне нужно сделать, чтобы мои выходы отображались при использовании модулей и отдельного outputs.tf файл?

    Terraform v0.11.14
+ provider.aws v2.19.0

Однако, если я не использую модули и создаю свои ресурсы строго из Main.tf файл, вывод показывает нормально.

main.tf

module "identity-provider" {
  source = "./modules/identity-provider"
}



module "saml-role1" {
  source = "./modules/saml-roles/"
}

===============

файл модуля

resource "aws_iam_role" "role1" {
  name                 = "saml-role1"
  description          = "Blah Blah"
  path                 = "/"
  assume_role_policy   = "${data.aws_iam_policy_document.assume_role.json}"
  permissions_boundary = ""
  max_session_duration = 43200



resource "aws_iam_role_policy_attachment" "Read-Only" {
  role       = "${aws_iam_role.role1.name}"
  policy_arn = "arn:aws:iam::aws:policy/ReadOnlyAccess"
}

=================

outputs.tf

output "Role1-ARN" {
  value = "${module.saml-role1.arn}"
}

3 ответа

Terraform захватывает и отображает только выходы корневого модуля. Если вам нужно передать выходные данные из модуля в корневой модуль, вы должны сделать это явно (например, у вас нет доступа ко всем ресурсам, созданным модулем из корневого модуля, ТОЛЬКО к значениям, указанным в качестве выходных данных). Если вы включите вывод в файл модуля следующим образом:

resource "aws_iam_role" "role1" {
  name                 = "saml-role1"
  description          = "Blah Blah"
  path                 = "/"
  assume_role_policy   = "${data.aws_iam_policy_document.assume_role.json}"
  permissions_boundary = ""
  max_session_duration = 43200



resource "aws_iam_role_policy_attachment" "Read-Only" {
  role       = "${aws_iam_role.role1.name}"
  policy_arn = "arn:aws:iam::aws:policy/ReadOnlyAccess"
}

output "saml-role1-arn" {
    value = "aws_iam_role.role1.arn"
}

Затем из корневого модуля вы можете получить доступ к выводу:


module "saml-role1" {
  source = "./modules/saml-roles/"
}

output "saml-role1-arn" {
    value = "${module.saml-role1.saml-role1-arn}"
}

Когда вы сохраняете переменную count в своем модуле, вам нужно использовать * в файле outputs.tf.

Пример:

      output "Role1-ARN" {
  value = "${module.saml-role1.*.Role1-ARN}"
}

Вам также нужен еще один файл output.tf вместе с файлом main.tf, чтобы захватить выходные данные из вашего модуля.

Ниже приведено содержимое файла output.tf.

output "Role1-ARN" {
  value = "${module.saml-role1.Role1-ARN}"
}

С Уважением,

Vinoth

Другие вопросы по тегам