2017-02-03 4 views
0

Ich verwende Terraform, um einen Datenbankserver mit einer anfänglichen Datenbank und einem Benutzer bereitzustellen.Wie verzögere ich die postgresql_database-Erstellung nach aws_db_instance

Die Terraform-Dateien sind ordnungsgemäß eingerichtet, aber die postgresql_role- und postgresql_database-Aktionen schlagen fehl, weil die Datenbank (Amazon RDS) noch eingerichtet wird, wenn sie aufgerufen werden.

Gibt es eine Terraform-Methode, um eine erzwungene Wartezeit hinzuzufügen? Oder eine explizite Überprüfung, ob die Datenbank verfügbar ist?

Antwort

1

können Sie einen local-exec provisioner verwenden, um eine Wartezeit leicht genug, um zu implementieren:

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}" 
    } 
} 

In dem obigen Beispiel, das ich gesetzt habe es einfach 60 Sekunden zu warten, wenn, bevor er auf einem anderen abhängigen einer Datenbankinstanz Ressourcen/Module (z. B. die Ressource progresql_database). Offensichtlich müssen Sie immer noch sicherstellen, dass Terraform eine Abhängigkeitskette folgen kann, um zu wissen, dass es zuerst die aws_db_instance Erstellung abschließen muss.

Verwandte Themen