2013-03-06 1 views
1

Ok, voici le marché. J'utilise un haricot élastique et j'ai deux environnements. Chacun d'eux a son propre nom et son propre URL, disons env-one = foo.elasticbeanstalk.com et env-two = bar.elasticbeanstalk.com. Ensuite, nous avons le domaine de production: example.com.Environnement de commutation automatique pour Elastic Beanstalk

example.com ont un pointage CNAME foo.elasticbeanstalk.com

L'environnement par défaut de poussée est env-deux.

Je pousse à l'environnement par défaut et vérifie que tout fonctionne bien, tout comme un environnement de développement normal. Quand tout le monde est content, je change les URL pour que l'environnement dev devienne l'environnement de production et inversement.

Alors maintenant, env-deux = foo.elasticbeanstalk.com et env-one = bar.elasticbeanstalk.com

Le problème est, l'environnement poussant par défaut est encore env-deux, mais cela est maintenant devenu l'environnement de production. Donc la prochaine fois que j'ai besoin de pousser à dev, je dois définir que je veux pousser à env-one. Donc, ce que je cherche est un moyen de ne pas avoir à définir l'environnement que je veux pousser à.

Merci d'avance pour les réponses. J'espère qu'il y a une solution à cela.

Répondre

1

Quelques réflexions:

1) Ceci est un peu en dehors de la portée que vous avez demandé (et je ne suis pas un expert AWS), mais étant donné les retards de propigation DNS si cela est un site public, le changement de DNS pourrait vous laisser avec une fenêtre de collision.

2) Vous pouvez définir un deuxième alias DNS "dev.elasticbeanstalk.com" et l'échanger en même temps, puis toujours appuyer sur celui-ci.

3) Si vous ne faites que pousser à partir d'un dépôt local, vous pouvez faire un peu de magie "git remote set-url" pour changer les URL et ainsi pousser vers la bonne. Cependant, cela semble être potentiellement sujet à erreur pour moi.

Si je devais rester avec DNS, j'utiliserais l'option # et ensuite je mettrais en place un système de surveillance qui déclencherait si "dev." et "example.com" pointaient vers le même enregistrement A.

1

Lorsque vous créez un git à déployer sur AWS EB avec this instruction (je choisi PHP un, d'autres flux de travail des langues est le même) et exécutez eb commande init il crée dossier spécial .elasticbeanstalk qui contient la description de l'environnement .

Lorsque vous exécutez la commande eb start, l'environnement est créé à l'aide de cette description.

Chaque fois que vous appelez git aws.push commande - une nouvelle URL git distante est générée. Cela dépend du nom de l'application, du nom de l'environnement, de l'ID de validation, de l'heure locale et des informations d'identification AWS. Seule l'URL générée est utilisée dans git aws.push command - Les URL distantes du référentiel git sont ignorées. Puisque l'URL dépend de l'heure actuelle, elle est toujours différente.

Pour déployer sur un autre environnement par défaut, vous pouvez simplement changer EnvironmentName option dans .elasticbeanstalk \ config fichier (si vos environnements sont dans la même application et ont les mêmes paramètres).

Si votre environnement est dans une autre application ou un des paramètres sont différents, je pense que vous devez supprimer .elasticbeanstalk dossier et exécutez commande eb initialisation réponses qui passent à nouveau en fonction de vos paramètres d'environnement déjà existants. Après cela, vous pouvez passer commande eb init (puisque l'environnement existe déjà) et continuer avec git aws.push.

Questions connexes