deploy-docker-compose-with-terraform-ansible / terraform-dir / instance.tf
instance.tf
Raw
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
}