Эта ошибка возвращается, поскольку aws_instance.example.*.password_data
- это список password_data
результатов для каждого из экземпляров EC2.Каждый из них должен быть расшифрован отдельно с помощью rsadecrypt
.
. Для этого в Terraform v0.11 необходимо использовать null_resource
в качестве обходного пути для достижения операции «для каждой»:
resource "aws_instance" "example" {
count = 2
ami = "ami-06f9d25508c9681c3"
instance_type = "t2.small"
key_name = "mykey"
vpc_security_group_ids = ["sg-98d190fc","sg-0399f246d12812edb"]
get_password_data = true
}
resource "null_resource" "example" {
count = 2
triggers = {
password = "${rsadecrypt(aws_instance.example.*.password_data[count.index], file("mykey.pem"))}"
}
}
output "Administrator_Password" {
value = "${null_resource.example.*.triggers.password}"
}
Начиная с Terraform v0.12.0, это можно упростить с помощью новой for
конструкции выражения:
resource "aws_instance" "example" {
count = 2
ami = "ami-06f9d25508c9681c3"
instance_type = "t2.small"
key_name = "mykey"
vpc_security_group_ids = ["sg-98d190fc","sg-0399f246d12812edb"]
get_password_data = true
}
output "Administrator_Password" {
value = [
for i in aws_instance.example : rsadecrypt(i.password_data, file("mykey.pem"))
]
}