我必须将我的应用程序部署到三台服务器上,很快会是四台。这变得越来越麻烦,我希望能够实现自动化。我本来打算编写脚本,但这是一个常见的问题,而且有很多工具(Puppet、Chef、Pallet、MCollective),所以我想有人可能已经制定了现成的策略并愿意分享。
我们有 3 台 Web 服务器(很快会有 4 台)。以下是我目前部署的步骤:
登录生产 Web 服务器 1
> service httpd stop
> service tomcat5 stop
登录 QA 服务器
> scp ROOT.war [email protected]:/usr/share/tomcat5/webapps/
但有时它更复杂,我可能需要复制以下任何内容:/etc/httpd/conf.d/mod_jk.conf /etc/tomcat5/context.xml
但是我不能仅仅从 QA 复制 context.xml,因为 QA 和生产中的连接字符串是不同的。
重新启动一切(ROOT.war 转移后)
> service tomcat5 start
> service httpd start
通常,我会部署到服务器 1,进行测试,然后部署到服务器 2 和服务器 3。我喜欢等到服务器 2 准备就绪后再开始部署到服务器 3 - Puppet 可以做到这一点吗(检查 / 的 HTTP 状态)?
那么,我可以让 Puppet 部署服务器 1,然后让它部署并等待服务器 2、服务器 3,以及即将部署的服务器 4 吗?
分阶段推出和轻松回滚可能是我正在寻找的功能。
答案1
答案2
我使用 rake 编写了一个部署脚本,它基本上可以完成您想要的功能。它编写起来非常简单,而且跨平台。Ant 是此类简单部署脚本的另一种选择。但是,如果我可以选择,我会使用 rake。
呼呼!
汤姆·普尔