理解它是否按照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"]
}
答案 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不是程序性的,所以确保秩序是不可能的。