【问题标题】:continuous delivery with puppet and artifactory使用 puppet 和 artifactory 持续交付
【发布时间】:2012-11-20 21:31:05
【问题描述】:

我有 Jenkins、Artifactory 和 3 个环境(开发、测试和生产)。

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

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

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

  1. 安装 puppet 的最佳位置在哪里?在与工件一起工作的同一台服务器上? Puppet 也配置了环境。所以不确定是否需要考虑一些事情。

  2. 在安装 puppet 之前或期间是否需要记住任何配置?尤其是在 artifactory 和 jenkins 的上下文中。

感谢任何提示/帮助。

【问题讨论】:

  • 当你说“它是在测试环境中编译和测试的”时,你的意思是单元测试,对吧?或者您是否已经进行了某种打包、分发和功能测试?
  • 是的,我的意思是单元测试。打包是一个战争文件,它是构建的结果,尚未分发。

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


【解决方案1】:

首先,您需要决定是要以主代理(客户端/服务器)模式还是以“无主”模式运行 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

【讨论】:

  • 这也是第一个问题:我如何在模式之间做出决定?如果我选择主代理模式,我如何决定哪个服务器是主服务器,哪个客户端。这是我对第二个问题的想法之一。
【解决方案2】:

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

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

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

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

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

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

希望能给你一些想法。

【讨论】:

  • 谢谢,这确实给了我一些想法。 user1207663 的先前答案也是如此。所以谢谢你们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2018-12-05
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多