Выходы не отображаются при использовании модулей
У меня есть 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