如何为多个应用程序编写Chef cookbook

时间:2017-02-22 05:12:50

标签: jenkins chef

想象一下Jenkins正在生成3种不同的发行版 - 一种是在NodeJS上运行的javascript,另一种是使用python模块在apache上运行的python,另一种是使用Springboot在Java上运行的。你如何编写一个Chef cookbook来安装所有这些都在具有最小linux ubuntu发行版的内部部署基础架构上。问题的范围涉及从Jenkins捕获触发器,然后启动Chef书籍以部署这3个应用程序。根据配置,所有3个应用程序应部署在相同的基础架构或不同的部署基础架构上。

2 个答案:

答案 0 :(得分:0)

所以有一些事情:

  1. 你如何写菜谱完全取决于你。我已经在http://github.com/poise/application_examples上获得了一些关于Python,Ruby和Node的例子,但这仅仅是我对这个主题的看法。每当你问"我如何与厨师做X?"答案永远是"如果没有厨师,你将如何做X,然后自动化#34;。

  2. 如何触发Jenkins的部署比已经非常模糊的答案更加模糊。最简单的答案是让Jenkins SSH连接到每台机器并运行chef-client。然而,这可能具有您不喜欢的安全隐患。您可以查看更多专用的命令推送系统,如MCollective,SaltStack或者Chef Chef Jobs(尽管我会跳过最后一个)。您也可以将节点设置为每5分钟自动收敛一次,这样所有Jenkins都会更新Chef服务器中的一些内容,说明要部署哪个版本,然后等待10分钟。

答案 1 :(得分:0)

我有类似的情况,使用TeamCity而不是Jenkins。 (但你可以复制类似的行为)

在我的情况下,我使用policy_files来管理我的基础架构,在那里我作为属性传递构建信息,以便我可以下载配方中的人工制品。 主要技巧是使用你提到的服务(Python,Java ......等等)触发构建,在提交GIT结果时更新policy_file中的属性(构建id,artefact name ...)。 / p>

作为回顾:

  1. 为您的服务构建完成。
  2. 触发policy_files的构建,更新人工制品下载信息。
  3. 您通常的构建工作流程。
  4. 为了下载文物,您可以使用remote_file主厨资源,进行校验和验证,以避免在每次主厨运行时下载相同的文件。