мой вопрос в основном состоит из двух вопросов, но, поскольку они тесно связаны, я подумал, что имеет смысл задать их целиком.
Пример:
Я запускаю веб-приложение, которое распределено по нескольким экземплярам AWS EC2 за AWS Elastic Load Balancer.
Цели:
а) При развертывании нового кода приложения (php) он должен автоматически распространяться на все экземпляры EC2.
б) При добавлении новых экземпляров EC2 они должны автоматически "загружаться" с последним кодом приложения.
Мои мысли до сих пор:
ad a)
phing (http://phing.info), вероятно, является ответом на эту часть. я бы, вероятно, добавил несколько целей для каждого экземпляра EC2, и при запуске развертывания он будет развернут на всех машинах. наверное к сожалению не параллельно. но это может быть даже полезно при написании сценария таким образом, что экземпляр EC2 «приостанавливается» в балансировщике нагрузки, обновляется, снова «возобновляется» и переходит к следующему экземпляру.
объявление б)
не знаю, как мне этого добиться. в обычной «аппаратной настройке» у меня, вероятно, был том «кода приложения» на сетевом запоминающем устройстве, и при добавлении нового сервера я просто прикреплял этот том. при развертывании нового кода приложения у меня была только одна операция развертывания на этом томе. поэтому мне нужно какое-то «центральное хранилище», откуда только что загруженная машина/экземпляр загружает свой код приложения. Я думал о git, но, в конце концов, git не является инструментом развертывания, и, вероятно, его не следует заставлять использовать как один из них.
Буду рад увидеть ваши настройки для таких задач и услышать ваши советы и идеи для такой ситуации.
Спасибо,
Джошуа