如何使用Chef客户端 - 服务器架构“按需”部署代码?

时间:2012-11-10 17:08:02

标签: deployment chef

以下是该方案:

我可以通过SSH连接到我的Chef-Server。但我无法 SSH到任何Chef-Clients。所以这就是我的工作方式:我有一个工作站来改变或创建角色。所有的厨师客户都作为守护进程运行,因此当他们醒来时,他们会注意到状态的变化并开始自我更新。

现在,我需要在这些客户端上配置代码部署。我以为我可以使用应用程序cookbook,并使用我的工作站为角色添加配方。但是,每当厨师 - 客户醒来并发现修订版本更改时,这不会导致部署吗?我想要一种On Demand类型的部署:我只想在代码部署就绪时部署,而不是在此之前进行任何其他提交。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

几个问题

准备好代码部署后?你怎么知道的?如果它是一个可重复的过程,你可以不将其编入配方吗?如果它不是一个可重复的过程,你需要制作一个可以自动化的过程

IE运行黄瓜测试,如果它们全部通过,那么部署其他什么都不做?

我们从Artifactory提供并使用web api检查我们可用的最新安装程序。如果它与以前安装的相同(通过检查/创建注册表项完成)我们对用户说,这个版本已经安装,所以我们正在跳过。如果它们不一样,我们安装。现在我知道这不是完全相同的情况,但我觉得这里需要一些自定义代码。

根据代码的状态,使用databag值来表示install = true或false。当您要部署时,您将在数据库中更新项目的安装项目,其余时间将其设置为false。如果值为真,配方才会继续?

答案 1 :(得分:0)

为什么没有HEAD随时可以部署的分支?只有当你的代码准备好进入这个世界时,才会推到这个分支。然后,您不必担心由大厨同步的存储库的中间,不稳定状态。当然,在看到更改之前,您仍然需要等待客户端唤醒和同步,因此如果延迟是一个问题,这将无法正常工作。