4

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

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

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

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

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

  2. 在安装 puppet 之前或期间是否需要记住任何配置?特别是在人工制品和詹金斯的背景下。

感谢您的任何提示/帮助。

4

2 回答 2

2

首先,您的第一个决定需要是要以主代理(客户端/服务器)模式还是以“无主”模式运行 puppet。puppetlabs.com 上的入门文档非常可靠,值得关注这些教程。

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

假设 redhat-ish 操作系统的 Puppet 101 masterless 示例:

# 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
于 2012-12-04T02:28:22.953 回答
2

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

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

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

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

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

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

希望能给你一些想法。

于 2012-12-04T22:40:33.787 回答