我正在使用Terraform部署带有初始数据库和用户的数据库服务器。
Terraform文件设置正常AFAICS,但postgresql_role和postgresql_database操作失败,因为数据库(Amazon RDS)在被调用时仍在设置。
是否有Terraform方式添加强制等待?或者明确检查数据库是否可用?
答案 0 :(得分:1)
您可以使用local-exec
provisioner轻松实现等待:
variable "database_delay" { default = 60 }
resource "aws_db_instance" "default" {
allocated_storage = 10
engine = "postgres"
engine_version = "9.6.1"
instance_class = "db.t2.micro"
name = "mydb"
username = "foo"
password = "bar"
db_subnet_group_name = "my_database_subnet_group"
parameter_group_name = "postgres9.6"
provisioner "local-exec" {
command = "sleep ${var.database_delay}"
}
}
在上面的示例中,我将其设置为在创建数据库实例时等待60秒,然后再转到任何其他相关资源/模块(例如progresql_database资源)。显然,您仍然需要确保Terraform可以遵循依赖链,以确保它必须首先完成aws_db_instance
创建。