2013-06-26 64 views
0

我正在为基于node.js的web应用程序编写主厨部署脚本。我是总厨师n00b。停止,删除,重新安装厨师的服务

到目前为止,这是进展顺利;我有一个“dependencies.rb”配方,它安装了我的应用程序依赖的所有包。现在,我正在尝试编写“install.rb”,它将继续安装我的应用程序。

我希望发生的是:

If the app install directory already exists then: 
    Stop the server 
    Delete the old install directory 
Unpack the new version to the install directory 
Start the service 

嗯,这是一个有点过度简化,但它或多或少什么,我试图完成。在配方中这样做最好的方法是什么?我有一种感觉会涉及“通知”。 :P

回答

0

在大多数情况下,配方将完全匹配您在问题中定义的伪代码。然而,你需要考虑的一件事是你将如何使配方幂等。

Chef的核心概念之一是,如果机器已经处于正确的状态(即您的应用程序已经部署了正确的版本),那么您不应该执行任何工作。

虽然我没有使用它们,但您应该看看applicationapplication_nodejs cookbook,它们公开用于部署应用程序的LWRP。

+0

感谢您的应用程序的指针。我会看看他们。 –

+0

尽管我真的很想将我的应用程序解压到“myapp - #{version}”,将“myapp”链接到该目录,然后在另一个端口上启动新应用程序,将HAProxy重定向到新应用程序,然后关闭旧的应用程序,实际上给我零宕机时间(除非有数据库迁移,当然,在这种情况下先杀死旧的应用程序,运行迁移,然后开始新的应用程序。)不知道是否有任何盒子将花费足够的时间来完成这一切。 –

+0

实际上,在阅读完这篇文章之后:http://docs.opscode.com/resource_deploy.html这将会完成我所需要的工作。另外我刚刚发现https://github.com/RiotGames/artifact-cookbook,这看起来也很有用。 –