terraform depends_on for provisioner file

时间:2018-01-11 15:06:18

标签: amazon-web-services terraform

我想在下面的terraform代码中的数据“template_file”在供应商“file”(基本上是ansible playbook)被复制到ec2实例之后执行。在这种情况下,我无法成功使用“depends_on”。有人可以帮助我,我怎么能实现这一目标?下面是示例代码段。

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>>"]
}

1 个答案:

答案 0 :(得分:1)

depends_on的正确格式与整个资源挂钩;所以你的案例格式如下:

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"]
}