Что касается средств автоматизации, вы можете использовать кукол или шеф-повара, чтобы выполнить работу.Компании, стоящие за этими, также предлагают хостинговые услуги:
Лично мы используем скалярий для развертывания наших серверов и их автоматического масштабирования.
Если это не то, что вы хотите, вы можете, например, написать свои собственные сценарии для развертывания chef в экземпляре.Уже есть ресурс развертывания , который очень хорошо работает с git.Вероятно, я бы порекомендовал chef-solo, так как для этого не потребуется запускать chef-сервер (он также имеет множество зависимостей и требует управления) или что-то вроде littlechef , что позволяет запускать chef-серверная установка, но без бремени запуска chef-сервера.
Задача будет, например, настроить частный AMI, который Amazon использует для автоматического масштабирования.
Этот AMI будет иметьваши службы (HTTP и т. д.), ruby и chef установлены (gem install chef
) и все остальное, что вам нужно, а затем по очереди запустите сценарии для дальнейшей настройки вашего экземпляра и разверните код из GIT.
Если выПройдя по этому пути, вы, конечно, можете установить столько служб, сколько требуется для AMI, и тогда вам понадобится только chef для развертывания кода.
Вот пример для извлечения кода из GIT с использованием рецепта chef:
git "/var/www/example.org" do
repository "git://github.com/yourname/example.git"
revision "production"
action :sync
end
Это позволит проверить вашу производственную ветку из git.
Поскольку по умолчанию он запускается от имени root, ваш ключ развертывания должен быть в /root/.ssh/id_rsa
.Вы можете сделать это, прежде чем создавать частный AMI.Вы также можете получить ключ из безопасного места перед развертыванием:
directory "/root/.ssh/" do
action :create
end
execute "download my deploy key" do
command "wget https://secure.location/id_rsa -O /root/.ssh/id_rsa"
not_if do File.exists?("/root/.ssh/id_rsa") end
end
(Я только что напечатал это, я не запускал его - но я почти уверен, что он должен работать, так как мы что-то делаемочень похоже на не-EC2-хосты.)
Если вы не запускаете chef-server или little-chef, я бы использовал capistrano для повторного выполнения chef-solo - например, дляпроверить новую версию кода.Capistrano будет отправлять команды экземпляру (через ssh), для чего я, вероятно, настрою учетную запись без пароля с ключом ssh и т. Д.
Дайте мне знать, если вам нужно больше указателей!