如何在aws_db_instance之后向postgresql_database创建添加延迟

时间:2017-02-03 10:53:48

标签: amazon-rds terraform

我正在使用Terraform部署带有初始数据库和用户的数据库服务器。

Terraform文件设置正常AFAICS,但postgresql_role和postgresql_database操作失败,因为数据库(Amazon RDS)在被调用时仍在设置。

是否有Terraform方式添加强制等待?或者明确检查数据库是否可用?

1 个答案:

答案 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创建。