Deepak Prasad
Deepak Prasad

Reputation: 301

terraform depends_on for provisioner file

i want data "template_file" in below terraform code to execute after provisioner "file" (basically ansible playbook) is copied to the ec2 instance. I am not able to successfully use "depends_on" in this scenario. Can some one please help me how can i achieve this? below is the sample code snippet.

resource "aws_eip" "opendj-source-ami-eip" {
  instance = "${aws_instance.opendj-source-ami-server.id}"
  vpc = true
  connection {
    host = "${aws_eip.opendj-source-ami-eip.public_ip}"
    user                = "ubuntu"
    timeout = "3m"
    agent = false
    private_key         = "${file(var.private_key)}"
  }
  provisioner "file" {
    source      = "./${var.copy_password_file}"
    destination = "/home/ubuntu/${var.copy_password_file}"
  }
  provisioner "file" {
    source      = "./${var.ansible_playbook}"
    destination = "/home/ubuntu/${var.ansible_playbook}"
  }
}

data "template_file" "run-ansible-playbooks" {
  template =  <<-EOF
              #!/bin/bash
              ansible-playbook /home/ubuntu/${var.copy_password_file} && ansible-playbook /home/ubuntu/${var.ansible_playbook}
              EOF
  #depends_on = ["<< not sure what to put here>>"]
}

Upvotes: 2

Views: 4788

Answers (1)

TJ Biddle
TJ Biddle

Reputation: 6484

The correct format for depends_on is pegged to the resource as a whole; so the format in your case would look like:

data "template_file" "run-ansible-playbooks" {
  template =  <<-EOF
              #!/bin/bash
              ansible-playbook /home/ubuntu/${var.copy_password_file} && ansible-playbook /home/ubuntu/${var.ansible_playbook}
              EOF
  depends_on = ["aws_eip.opendj-source-ami-eip"]
}

Upvotes: 4

Related Questions