如何在Terraform中定义不带触发选项的执行顺序

suk*_*kho 2 terraform

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

我了解必须描述触发器选项才能定义terraform的顺序。

但是,如果无法将其用作触发选项(如“外部”数据),该如何定义执行顺序?

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

get_my_public_ip -> ec2 -> db -> test_http_status
Run Code Online (Sandbox Code Playgroud)

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"]
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*hen 6

我只能提供有关您提供的代码的反馈,但是确保test_status数据库准备就绪后才能运行命令的一种方法是depends_onnull_resource中使用

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

但是,正如@JimB已经提到的,terraform不是程序性的,因此无法确保顺序。