我不得不将这个应用程序部署到三台服务器上,而且很快就要四台。 这是一个痛苦,我正在寻求自动化。 我要编写这个脚本,但这是一个很普遍的问题,那里有太多的工具(木偶,厨师,托盘,MCollective),我认为有人可能有一个现成的战略,他们愿意分享。
我们有3个networking服务器(不久将有4个)。 以下是我目前用来部署的步骤:
login到生产Web服务器1
> service httpd stop > service tomcat5 stop
login到QA服务器
> scp ROOT.war [email protected]:/usr/share/tomcat5/webapps/
但是,有时候它会更复杂,我可能需要复制以下任一项:/etc/httpd/conf.d/mod_jk.conf /etc/tomcat5/context.xml
但是我不能仅仅从QA复制context.xml,因为连接string在QA和生产中是不同的。
重新启动所有内容(在ROOT.war传输完毕后)
> service tomcat5 start > service httpd start
通常,我部署到server1,testing,然后部署到server2和server3。 我喜欢等到服务器2完成准备就绪之前,我开始部署到服务器3 – 可以木偶这样做(检查HTTP的HTTP状态)?
那么,我可以让Puppet部署server1,然后让它进行部署,并等待server2,server3,并很快成为server4?
分阶段推出,也许容易回滚将是我正在寻找的function。
我曾经同哈德森和卡皮斯特拉诺一起工作 – 他们都是非常有用的工具,值得调查。 Capistrano可以configuration为在部署之前使用rake脚本更新任何连接string/path,这是非常好的,我相信Hudson将允许您基于正则expression式来执行相同的操作。
两者都是为部署过程而devise的,真的很有帮助,它们都应该是相当自我logging的:)
我写了一个部署脚本,使用耙子来完成你基本想要的function。 写作和跨平台是很简单的。 Ant是这些types的简单部署脚本的另一种select。 但是,如果我有select,我正在使用耙。
HTH!
汤姆·珀尔