Мне нужно развернуть свое приложение на трех серверах, а скоро их будет четыре. Это становится проблемой, и я хочу ее автоматизировать. Я собирался написать сценарий, но это настолько распространенная проблема, и существует так много инструментов (Puppet, Chef, Pallet, MCollective), что я подумал, что у кого-то может быть уже существующая стратегия, которой они готовы поделиться.
У нас есть 3 веб-сервера (скоро их будет 4). Вот шаги, которые я сейчас использую для развертывания:
войти на рабочий веб-сервер 1
> service httpd stop
> service tomcat5 stop
войти на сервер QA
> scp ROOT.war user@server1.example.com:/usr/share/tomcat5/webapps/
Однако иногда это более сложно, и мне может потребоваться скопировать любое из следующего: /etc/httpd/conf.d/mod_jk.conf /etc/tomcat5/context.xml
Но я не могу просто скопировать context.xml из QA, поскольку строки подключения отличаются в QA и производстве.
перезапустить все (после переноса ROOT.war)
> service tomcat5 start
> service httpd start
Обычно я развертываю на server1, тестирую, а затем развертываю на server2 и server3. Мне нравится ждать, пока сервер 2 будет готов, прежде чем я начну развертывание на сервере 3 - может ли Puppet это сделать (проверьте статус HTTP /)?
Итак, могу ли я развернуть Puppet server1, а затем выполнить развертывание и подождать до server2, server3 и скоро будет server4?
Поэтапное развертывание и, возможно, легкий откат - вот функции, которые я ищу.
Я работал с обоими Hudson и Capistrano раньше - они оба действительно полезные инструменты, которые стоит изучить. Capistrano можно настроить для использования сценария rake для обновления любых строк / путей подключения перед развертыванием, что действительно хорошо, и я считаю, что Hudson позволит вам сделать то же самое на основе регулярного выражения.
Оба предназначены для процессов развертывания и действительно полезны, они оба должны быть довольно самодокументированными :)
Я написал сценарий развертывания, который делает то, что вы в основном хотите, используя грабли. Это было очень просто писать и кроссплатформенность. Ant - еще один вариант для этих типов простых сценариев развертывания. Однако, если у меня есть выбор, я использую рейк.
HTH!
Том Перл