cat <> main.tf data "template_file" "user_data" { template = file("user-data.sh") vars = { server_port = 8080 db_address = data.terraform_remote_state.db.outputs.address db_port = data.terraform_remote_state.db.outputs.port } } data "aws_ami" "my_amazonlinux2" { most_recent = true filter { name = "owner-alias" values = ["amazon"] } filter { name = "name" values = ["amzn2-ami-hvm-*-x86_64-ebs"] } owners = ["amazon"] } resource "aws_launch_configuration" "mylauchconfig" { name_prefix = "t101-lauchconfig-" image_id = data.aws_ami.my_amazonlinux2.id instance_type = "t2.micro" security_groups = [aws_security_group.mysg.id] associate_public_ip_address = true # Render the User Data script as a template user_data = templatefile("user-data.sh", { server_port = 8080 db_address = data.terraform_remote_state.db.outputs.address db_port = data.terraform_remote_state.db.outputs.port }) # Required when using a launch configuration with an auto scaling group. lifecycle { create_before_destroy = true } } resource "aws_autoscaling_group" "myasg" { name = "myasg" launch_configuration = aws_launch_configuration.mylauchconfig.name vpc_zone_identifier = [aws_subnet.mysubnet1.id, aws_subnet.mysubnet2.id] min_size = 2 max_size = 10 tag { key = "Name" value = "terraform-asg" propagate_at_launch = true } } EOT