如何在terraform中定义没有触发器选项的执行顺序

时间:2018-04-04 01:44:20

标签: terraform

理解它是否按照terraform的main.tf中定义的顺序运行是否有意义?

我知道有必要描述触发选项,以便在terraform上定义顺序。

但如果无法使用触发器选项,例如此数据"外部" ,我如何定义执行顺序?

例如,我想按顺序运行如下。

get_my_public_ip -> ec2 -> db -> test_http_status

main.tf如下

data "external" "get_my_public_ip" {
  program = ["sh", "scripts/get_my_public_ip.sh"]
}

module "ec2" {
  ...
}

module "db" {
  ...
}


data "external" "test_http_status" {
  program = ["sh", "scripts/test_http_status.sh"]
}

1 个答案:

答案 0 :(得分:3)

我只能就您提供的代码提供反馈,但确保在数据库准备好后运行test_status命令的一种方法是在null_resource内使用depends_on

resource "null_resource" "test_status" {
  depends_on = ["module.db.id"] #or any output variable
  provisioner "local-exec" {
    command = "scripts/test_http_status.sh"
  }
}

但是@JimB已经提到过terraform不是程序性的,所以确保秩序是不可能的。