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

如何在terraform中定义没有触发器选项的执行顺序,terraform,Terraform,理解它按照terraform的main.tf中定义的顺序运行有意义吗 我理解,为了定义terraform上的顺序,有必要描述触发器选项 但是,如果它不能像这个数据“外部”那样使用触发器选项,我如何定义执行顺序 例如,我希望按如下顺序运行 get_my_public_ip -> ec2 -> db -> test_http_status main.tf如下所示 data "external" "get_my_public_ip" { program = ["sh", "sc

理解它按照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"]
}

我只能就您提供的代码提供反馈,但确保数据库准备就绪后运行
test\u status
命令的一种方法是在数据库中使用
dependens\u


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

terraform配置是声明性的,而不是程序性的。资源声明的顺序与执行的顺序无关。唯一具有“触发器”属性的资源是
null\u资源
,但资源之间的引用创建了一个依赖项。依赖于\u可以与任何资源一起使用?还是必须是模块?它可以与任何资源一起使用-
resource "null_resource" "test_status" {
  depends_on = ["module.db.id"] #or any output variable
  provisioner "local-exec" {
    command = "scripts/test_http_status.sh"
  }
}