使用Chef在Vagrant框中更新登台服务器(来自CI服务器)

我正在使用Vagrant + Chef(chef_client provisioner)为我的服务器创build和configuration临时环境。 而且我还有一个Jenkins的工作,每次我推到我的“开发”部门时都会运行。

在Jenkins的工作中,我想更新并重build临时文件夹中的服务器的源代码,然后重新启动它。

我已经写了安装依赖关系的食谱,configuration数据库等。但我不知道如何运行只更新和重build和重新开始从食谱的东西。 我知道我总是可以拆掉整个箱子并重build它,但是提供箱子是一个漫长的过程,所以我希望尽可能less地做到这一点。

我把我的服务器食谱分成3个配方:依赖,db_setup和服务器。 我想在Jenkins工作中运行的只是“服务器”配方。 但是我不明白我该怎么做……如果我在厨师服务器上指定run_list,那么我就失去了从头开始configuration整个盒子的能力。

基本上,我希望能够从命令行告诉stream浪汉厨师应该运行的食谱。 这有可能吗?

干杯!

厨师资源应该是幂等的,所以你应该可以一遍又一遍地运行厨师客户端,而不必重新安装软件,除非实际上有你想要的改变。 如果上次运行时发生变化,您可以创build自己的主厨配方,只做代码的新build。

所以你可以有一个配方,只有更新和重build,如果有变化,然后在重build部分,你可以做一个通知:重新启动所有相关的服务(这是我现在正在跟踪的过程)。

看到这个答案更详细的关于幂等性和重复调用的厨师https://stackoverflow.com/questions/4913521/chef-repetitive-recipe-execution