什么不应该由傀儡管理?

什么不应该由傀儡管理?

我正在学习配置管理的一般方法,并使用木偶实施它的具体方法,我想知道系统的哪些方面(如果有的话)应该不是用puppet来管理吗?

举个例子,我们通常认为在将系统交给 puppet 管理之前,主机名已经设置好了。基本 IP 连接(至少在用于连接 puppetmaster 的网络上)必须正常工作。使用 puppet 自动创建 dns 区域文件很诱人,但在启动之前,DNS 反向指针应该已经到位,否则证书会很麻烦。

那么我应该从 puppet 中省去 IP 配置吗?还是应该在第一次启动 puppet 之前进行设置,但仍然使用 puppet 管理 IP 地址?对于具有多个 IP 的系统(例如 WAN、LAN 和 SAN)怎么办?

关于什么智能平台管理接口? 你可以使用以下方式配置大部分(如果不是全部)ipmitool,这样你就不用访问控制台(物理、串行局域网、远程 KVM 等等),因此可以使用 puppet 实现自动化。但每次运行 puppet 代理时重新检查其状态对我来说并不酷,在执行其他任何操作之前,我希望先拥有对系统的基本访问权限。

另一个故事是关于安装更新。我不会深入讨论这一点,SF 上已经存在很多问题,不同的系统管理员之间也存在很多不同的理念。我自己决定不让 puppet 更新东西(例如,只更新ensure => installed),而是像我们已经习惯的那样手动进行更新,把这项任务的自动化留到以后我们对 puppet 更有信心的时候(例如,通过添加集体混合在一起)。

以上只是我目前想到的几个例子。系统中是否有任何方面应该被 puppet 排除在外?或者,换句话说,在配置时应该设置的内容和在系统中“静态”配置的内容以及通过集中配置管理处理的内容之间的界限在哪里?

答案1

一般规则:如果您使用配置管理,请尽可能管理配置的各个方面。集中程度越高,扩展环境就越容易。

具体例子(摘自问题,所有“这就是为什么你想要管理它”的叙述):


IP 网络配置

好的,当然,在将机器放入机架之前,您已在机器上配置了地址/网关/NS。我的意思是,如果您没有配置,您将如何运行 puppet 来完成其余配置?

但是现在假设您在环境中添加了另一个名称服务器,并且需要更新所有机器——您不希望配置管理系统为您完成这项工作吗?

或者说你的公司被收购了,你的新母公司需要将你的地址从 192.168.0.0/24 更改为 10.11.12.0/24 以适应他们的编号系统。

或者你突然获得一份巨额政府合同——唯一的条件是你必须启用 IPv6就在此刻或者交易失败...

看起来网络配置是我们想要管理的东西……


IPMI 配置

就像 IP 地址一样,我相信您在将机器放入机架之前已经对其进行了设置——在任何具有此功能的机器上启用 IPMI、远程控制台等只是一种常识,而且这些配置不会发生太大变化……

... 直到我在上面的 IP 配置中提到的假设性收购——您被迫腾出那些 192.168 网络地址的原因是因为根据您的新公司领导的说法,那是 IPMI 土地,您需要立即更新所有 IPMI 卡,因为它们将侵犯某人的保留 IP 空间。

好吧,这有点牵强,但就像你说的 - 所有这些都可以通过 进行管理ipmitool,那么为什么不让 Puppet 运行该工具并在它执行所有其他操作时确认配置呢?我的意思是它不会造成任何损害,所以我们不妨也包括 IPMI...


更新

软件更新更像是一个灰色地带——在我的组织中,我们评估了 puppet 的这一功能,发现它“非常缺乏”,所以我们将其用于radmind此目的。但是,没有理由 Puppet 不能调用 radmind——事实上,如果我们迁移到 Puppet 进行配置管理,这正是将要发生的事情!

这里最重要的是以标准方式安装所有更新(无论是整个组织的标准,还是平台内的标准)——只要您彻底测试了所有内容以确保 Puppet 不会搞砸任何事情,就没有理由不让 Puppet 启动您的更新过程。如果您
确定 Puppet 无法独自完成这项工作,那么也没有理由不让 Puppet 调用更适合此任务的工具……

答案2

不要重新发明轮子。

是的,您可以拥有 50 个 Puppet 虚拟用户资源,并根据需要在您的模块中实现它们……但如果可以的话,请使用 LDAP。

我说过我有过痛苦的经历。尽管 ldap 还不是这里的一个选择。

另一个例子是推出主机文件,而不仅仅是使用 DNS。

答案3

  • Puppet 不是一个编排系统。特别是:
    • Puppet 不太适合 VM 编排,因为 VM 有其自己的生命周期,应该受到尊重。
    • Puppet 不太适合应用程序发布管理/复杂升级。可以使用独立的 Puppet 运行来实现这一点,但至少它不是由 Puppet 控制,而是由您的包装器脚本或人类机器人控制,这很好。
  • Puppet 不是一个好的用户管理系统(它必须管理每一个无法有效输入用户,甚至删除用户。所以寻找另一种解决方案)
  • Puppet 不是一个好的配置数据库(考虑使用某种外部数据库,以及 ENC、Hiera 或一些类似的粘合剂)

当然,你可以用 Puppet 做所有这些事情……但这不是最好的解决方案。有时你应该放下锤子,去找扳手。

然而,Puppet 非常擅长维护机器的基本配置,以及安装允许您执行 VM 和发布编排、用户管理等的工具。

答案4

我基本同意 voretaq7 的观点,但有几点需要注意。

  • 我很少在 puppet 中配置 IP 寻址,除非系统使用 DHCP(我认为大多数大型“云”提供商都这样做)。我曾遇到过这样的情况:我用 puppet 破坏了网络配置,但无法用 puppet 纠正它们,因为节点没有任何方式联系 puppetmaster。

  • 我坚信更新管理属于系统工具的范畴,并且我并不认为使用 puppet 作为美化的 cron 是一种改进。

相关内容