I am trying to create multiple ec2 instance using terraform modules. As every instance will have different user data, I want to do this but it's giving error
data "local_file" "user_data" {
for_each = { for ec2 in var.ec2_instances : ec2.name => ec2 }
filename = "${path.cwd}/${each.value.user_data}"
}
resource "aws_instance" "instances" {
for_each = { for instance in var.ec2_instances : instance.name => instance }
ami = each.value.ami
instance_type = each.value.type
cpu_core_count = each.value.cpu_core
user_data_base64 = base64encode(data.local_file.user_data[each.value.name].rendered)
}
module.tf
module "ec2_app_demo" {
source = "./aws-ec2-application/"
ec2_instances = var.ec2_instances
}
In the tfvars file
ec2_instances= [
{
name = test1
user_data = ec2_1.sh
},
{
name = test2
user_data = ec2_2.sh
}
]
Error:
Error: Invalid function argument\n\n on main.tf line 76, in data "local_file" "linux-vm-cloud-init":\n 76: filename = file("${each.value.user_data}")\n
Please let me know if the file name can be used a variable.