data "aws_ami" "project_ubuntu_ami" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"] } owners = ["099720109477"] } resource "aws_key_pair" "project_ssh_key" { key_name = "server-key" public_key = file(var.public_key_location) } resource "aws_instance" "project_server" { ami = data.aws_ami.project_ubuntu_ami.id instance_type = "t2.micro" subnet_id = aws_subnet.project_subnet-1.id vpc_security_group_ids = [aws_security_group.project_sg.id] availability_zone = var.avail_zone associate_public_ip_address = true key_name = aws_key_pair.project_ssh_key.key_name tags = { Name: "${var.env}-server" } } resource "terraform_data" "call-ansible" { triggers_replace = aws_instance.project_server.public_ip provisioner "local-exec" { working_dir = var.play_book_location command = "ansible-playbook --inventory ${aws_instance.project_server.public_ip}, --private-key ${var.private_key_location}, --user ubuntu" } } output "instance_public_ip" { value = aws_instance.project_server.public_ip }