Je crée des instances EC2 mais lorsque j'ajoute un enregistrement Route53, il faut jusqu'à 60 secondes pour que le DNS se reproduise et soit reconnu.Retard d'enregistrement Terraform Route53 pour l'instance EC2
resource "aws_instance" "zk-host" {
ami = "ami-30041c53" # Amazon Linux Image
count = "${var.count}"
associate_public_ip_address = false
connection {
user = "ec2-user"
}
provisioner "remote-exec" {
inline = [
... install things here...
#"sudo service zookeeper-server start ... after some delay ?"
]
}
}
// Make a DNS entry for each host while we're here.
resource "aws_route53_record" "route53-record-zk" {
zone_id = "${var.route53-zone-id}"
count = "${var.count}"
name = "${var.host-name-prefix}${count.index}.dwh.local"
type = "A"
ttl = "30"
records = [
"${element(aws_instance.zk-host.*.private_ip, count.index)}"
]
}
Le problème est, je me sers de la approvisionneur à distance exec pour lancer des services dans mon instance EC2 qui se fondent sur le DNS pour trouver ses pairs.
Je ne semble pas pouvoir configurer l'entrée DNS avant de créer l'instance EC2.
Y a-t-il un moyen de post-traiter mon instance EC2 et de démarrer les services plus tard? Ou existe-t-il une technique pour retarder le démarrage du service jusqu'à ce que les entrées DNS existent?
Vous devez ajouter le script wrapper dans remote-exec, par exemple 'sleep 120'. – BMW
Merci pour la suggestion, mais ne fonctionne pas. Le problème semble être l'interdépendance sur * aws_route53_record *. Cela dépend de l'aws_instance pour obtenir son adresse IP. Ajouter un sommeil retarde juste l'achèvement de l'aws_instance. Je pense que je devrais le fourchonner en arrière-plan en quelque sorte. – Exie