Nic*_*ick 8 php git deployment amazon-ec2
我一直在阅读很多文章,讨论使用Git部署网站的更新后挂钩,但是我不明白在EC2上如何做到这一点.
我想使用EC2的Auto Scaling功能根据我服务器的AMI在我的负载均衡器后面自动添加微/小节点.
我怎么能这样做:
我的节点在启动时自动从存储库中获取最新版本的站点
推送更新到所有节点(如果可能,立即触发更新),甚至是动态添加的节点(因此没有超出AMI已包含的配置).
就自动化工具而言,您可以使用木偶或厨师来完成工作.这些公司背后的公司也提供托管服务:
我们个人使用scalarium来部署我们的服务器并自动调整它们.
如果这不是您想要的,您可以编写自己的脚本供Chef在实例上进行部署.已经有一个部署资源可以很好地与git配合使用.我可能会推荐大厨独唱,因为这不需要运行厨师服务器(也有很多依赖和需求管理)或类似littlechef的东西,它允许你运行类似厨师服务器的设置,但没有burdon运行厨师服务器.
目标是例如设置亚马逊用于自动缩放的私有AMI.
这个AMI会让您的服务(HTTP等),ruby和chef安装(gem install chef)以及您需要的任何其他内容,然后运行脚本以进一步设置您的实例并从GIT部署代码.
如果沿着这条路走下去,您当然可以根据AMI的需要设置多个服务,然后您只需要厨师来部署代码.
这是一个使用大厨食谱从GIT查看代码的示例:
git "/var/www/example.org" do
repository "git://github.com/yourname/example.git"
revision "production"
action :sync
end
Run Code Online (Sandbox Code Playgroud)
这将从git中检出你的生产分支.
由于默认情况下以root身份运行,因此您应该拥有deploykey /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
Run Code Online (Sandbox Code Playgroud)
(我只是输入了这个,我没有运行它 - 但我几乎可以肯定它应该可以工作,因为我们在非EC2主机上做了类似的事情.)
如果你不运行chef-server或little-chef,我会使用capistrano再次执行chef-solo - 例如检查代码的新版本.Capistrano会向实例发送命令(通过ssh),为此我可能会设置一个带密码的密码等帐户.
如果您需要更多指针,请告诉我!
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |