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

How to define execution order without trigger option in terraform

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

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

但是如果不能像这个数据那样使用触发选项"external",如何定义执行顺序?

比如我想运行顺序如下

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

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

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 不是程序性的,因此无法确保顺序。