如何在 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 不是程序性的,因此无法确保顺序。
理解它 运行 按照 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 不是程序性的,因此无法确保顺序。