非网络环境中存在哪些配置管理解决方案?

非网络环境中存在哪些配置管理解决方案?

我的服务器处于没有外部网络连接的环境中(这是必需的),因此当我部署更新时,所有包、二进制文件、配置文件等都必须包含在交付的媒体中。当然,我希望有某种配置管理,这样我就可以知道哪些已经安装,哪些尚未安装。

所以我想知道大家是否有使用 chef、puppet 或其他配置管理工具来处理此类环境的经验。最糟糕的情况是我将更新部署为 RPM。

编辑:

我的设置同时具有 Linux 服务器和 Windows 服务器。

答案1

我个人使用过 Puppet 和 cfEngine,发现它们都是完成此类任务的好工具,我相信它们目前是该领域的主要参与者。当你开始尝试扩展 Puppet 时,需要多加小心,但它的语法更好;cfEngine 的扩展性很好,但学习它可能需要更多时间。如果没有外部网络连接包括你可以控制的任何其他服务器,它们都能够在无法访问主服务器的情况下缓存它们的目录/配置,成为它们自己的主服务器,或者仅按需运行,所以它们都应该能够处理无网络要求。如果它们可以访问内部管理的服务器,这绝对不是问题。

和我一起工作的一个人对 bcfg2 赞不绝口,但我还没有用它做过任何工作。目前,我工作的地方正在使用 Puppet,不管它值多少钱。

每种方式都有自己的优点和缺点,你的选择很大程度上取决于你可能有的其他要求。你可以看看这里以基本了解您所拥有的比较常见和比较不常见的选项。

答案2

我假设您有大量服务器出于安全原因在离线环境中运行(这些原因变得越来越普遍)。我自己也遇到过非常类似的情况。这个问题的真正答案取决于您的架构是什么样的。

所有常用的播放器(Chef、Puppet、CF-Engine、Salt、Annsible)都可以在离线环境中工作,但是某些正常工作的东西却无法正常工作,并且会妨碍您(例如,puppet 自动从 forge 下载模块要求将无法工作)。但是,根据您使用的软件版本,有一些解决方法。对于 Puppet(如果您使用的是 v3),我建议使用 r10k 来帮助缓解问题(我相信 v4 已包含它)。

@David 所说的关于 puppet 的建议也非常好。现在无论你使用什么,我都会建议你使用以下方法,我发现这些方法会让你的生活变得轻松很多:-

  • 尽量避免将数据硬编码到配置中(例如,如果您使用 puppet,请使用 hiera)。
  • 尽可能在网络环境中进行开发(这样,你在开发时就不必担心依赖问题
  • 如果您可以在大多数系统中使用客户端-服务器模式,请这样做,因为本地运行模式确实会产生一些额外的复杂性,如果您无法避免的话,那将很痛苦。
  • (Chef/Puppet)如果您有一个本地存储库服务器,请查看是否可以将其设置为在互联网连接中提供食谱/模块(就像使用 Maven 一样)

从 Windows 的角度来看(假设您使用的是最新版本),看看使用 Windows DSC + Powershell,因为至少 Chef 和 Puppet 有可以与其交互以配置 Windows 组件(以及您可以使用 Powershell 做的任何其他事情)的食谱/模块。

如果有帮助的话,请查看我对我自己问题的回答这里,因为这是“其他”决定因素之一。

一般来说,您需要根据自己的需求来评估每个工具,但大多数情况下我发现似乎有一些社区解决方案可以解决您可能遇到的任何问题。

答案3

我最近一直在尝试使用离线 Puppet,用于无法拥有主服务器的远程环境。特别是,本文对我很有帮助,如果你决定走 Puppet 路线,它可能值得一看。

您可以在 /etc/puppet 下设置一个正常的 Puppet 结构,然后手动运行 puppet。到目前为止,我还没有弄清楚如果没有 master,日志记录和报告的效果会有多好。

这是我在开发/测试过程中最好的朋友:

puppet -d -v --modulepath=/etc/puppet/modules /etc/puppet/manifests/site.pp

答案4

Salt 允许您为您的包提供备用位置。

mypkgs:
  pkg.installed:
    - sources:
      - foo: salt://rpms/foo.rpm
      - bar: http://somesite.org/bar.rpm
      - baz: ftp://someothersite.org/baz.rpm
      - qux: /minion/path/to/qux.rpm

在此示例中,将从指示的位置安装这些包:

  • foo 将从 Salt 文件服务器上的 rpm 安装
  • bar 将从 http 位置安装
  • baz 将从 ftp 位置安装
  • qux 将从本地文件系统安装

相关内容