持续交付傀儡和神器

时间:2012-12-03 12:04:10

标签: jenkins puppet artifactory continuous-deployment continuous-delivery

我有Jenkins,Artifactory和3个环境(开发,测试和制作)。

当开发人员从开发环境中提交某些内容时,它会在测试环境中进行编译和测试。它的构建和工件存储在Artifactory中。

现在我想进入下一步,在puppet的帮助下管理环境并将Artifactory中的工件部署到生产环境。

但我需要一些提示才能开始:

  1. 安装木偶的最佳地点在哪里?和他们工作的神器一样在同一台服务器上? Puppet也配置环境..所以不确定是否有必须考虑的事情。

  2. 在安装木偶之前或期间,我需要记住哪些配置?特别是在神器和jenkins的背景下。

  3. 感谢任何提示/帮助。

2 个答案:

答案 0 :(得分:2)

首先,您的第一个决定需要是您是否要在主代理(客户端/服务器)模式或“无主”模式下运行puppet。在puppetlabs.com上开始的文档是可靠的,值得遵循教程。

无论您的决定如何,您都需要在每个运行puppet的服务器上安装puppet - 相同的二进制文件运行master,agent,apply等。

假设redhat-ish操作系统的Puppet 101无主实例:

# Install puppet
sudo yum install puppet -y

# Create basic manifest
 echo "notify {'hello world':}" > hello.pp

# Run masterless scenario:
sudo puppet apply hello.pp

预期结果:

notice: hello world
notice: /Stage[main]//Notify[hello world]/message: defined 'message' as 'hello world'
notice: Finished catalog run in 0.03 seconds

答案 1 :(得分:2)

免责声明:这就是我的做法:)

我认为将Artifactory放在与Puppet Master相同的服务器上没有任何好处,这似乎是一个坏主意。

在Artifactory中,我有一个虚拟的存储库,其中只包含我关心的产品工件。我有一个单独的通用Web服务器,托管各种木偶节点,有时我们公司的人需要下载。该服务器也是神器中虚拟仓库的转发代理。

本地Web服务器每晚与外部aws服务器同步。在内部,需要下载位的节点从本地服务器获取它们。在外部,他们从云服务器下载(实际上是一个自动扩展集群)。

这使得编写可以在节点上下载,md5和安装工件的puppet清单/自定义类型相当简单。对于Linux来说,更顺畅的是构建软件包,但我目前还没有。

我也使用Foreman作为Puppet ENC。软件版本在全局,组和(如果需要)节点级别配置为Foreman参数。要部署新版本的应用程序之战,有人只需登录Foreman,设置参数,并等待Puppet完成其工作(或登录节点并强制Puppet运行,如果需要)。

希望能给你一些想法。