什么不应该由傀儡pipe理?

我通过一般的configurationpipe理学习了自己的方式,特别是使用puppet来实现它,我想知道系统的哪些方面(如果有的话) 应该用puppet来pipe理。

举个例子,我们通常认为在将系统借给傀儡pipe理之前已经build立了主机名。 基本的IP连接,至less在用来联系木偶大师的networking上,必须工作。 使用木偶来自动创buildDNS区域文件是诱人的,但DNS反向指针应该已经在启动东西或证书将是有趣的。

那么我应该从puppet中去掉IPconfiguration吗? 还是应该在第一次启动木偶之前设置它,但是仍然用木偶pipe理ip地址? 有多个IP的系统(如WAN,LAN和SAN)呢?

怎么样IPMI ? 你可以用ipmitoolconfiguration它的大部分(如果不是全部的话),从而避免获得控制台访问权限(物理,串口over LAN,远程KVM等等),这样就可以通过puppet实现自动化。 但重新检查每个傀儡代理商的状态对我来说听起来并不酷,而在进行其他任何事情之前,基本的进入系统的灯光是我想要的。

另一个故事是关于安装更新。 我不是在这个具体的问题上,SF和许多不同的系统pipe理员之间的哲学已经有很多问题了。 我自己,我决定不让木偶更新东西(比如只ensure => installed ),并且像我们习惯的那样手动进行更新,而当我们对木偶更有信心的时候,这个任务的自动化将会更晚。通过添加MCollective混合)。

这些只是我脑海中的一些例子。 系统的任何方面都应该放在傀儡拿不到的地方吗? 或者换句话说,在系统configuration时应该设置什么和在系统中“静态”configuration之间的界限,以及通过集中configurationpipe理来处理什么?

    一般规则:如果您正在使用configurationpipe理,请pipe理您可以configuration的每个方面。 越集中越容易扩展您的环境。

    具体的例子(从这个问题入手,所有“这就是为什么你要pipe理它”的叙述):


    IPnetworkingconfiguration

    好的,当然,您在将机器放入机架之前,先在机器上configuration了地址/网关/ NS。 我的意思是如果你不怎么运行puppet来完成其余的configuration?

    但现在说,你添加一个名称服务器到你的环境,你需要更新所有的机器 – 你不想让你的configurationpipe理系统为你做?

    或者说你的公司被获得,你的新母公司要求你从你的192.168.0.0/24寻址改变到10.11.12.0/24,以适应他们的编号系统。

    或者你突然得到一个大规模的政府合同 – 只有抓住你必须打开IPv6 RIGHT FREAKIN现在或交易是吹….

    看起来像networkingconfiguration是我们想要pipe理的东西…


    IPMIconfiguration

    就像使用IP地址一样,在将机器放入机架之前,我确信您已经设置了这一点 – 在任何具有此function的机器上启用IPMI,远程控制台等,这些configuration只是常识变化不大

    …在我之前在IPconfiguration中提到的假设性收购之前 – 您被迫腾出192.168-net地址的原因是因为这是根据您的新公司霸主的IPMI-land,您需要更新所有IPMI卡现在,因为他们会践踏某人的保留IP空间。

    好吧,这里有一点点延伸,但正如你所说 – 所有这一切都可以通过ipmitool进行pipe理,那么为什么不让Puppet运行该工具,并在configuration其他所有东西时确认configuration? 我的意思是这不会伤害任何东西,所以我们也可以包括IPMI …


    更新

    软件更新更多的是灰色地带 – 在我的组织中,我们评估木偶,发现它“非常缺乏”,所以我们使用radmind来达到这个目的。 虽然木偶无法调用radmind,但事实并非如此 – 实际上,如果/当我们迁移到Puppet进行configurationpipe理时,这正是会发生的事情!

    这里最重要的是以标准方式安装所有更新(无论是组织内的标准,还是平台内的标准) – 只要您已经完全testing,Puppet不应该启动更新过程确保木偶不会搞砸任何东西。
    如果你认定Puppet自己做不好的话,那么Puppet也无法向一个更适合这个任务的工具发出呼吁。

    不要重新发明轮子。

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

    我从痛苦的经历中发言。 尽pipeldap在这里不是一个选项。

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

    • 木偶不是一个编排系统。 尤其是:
      • Puppet并不适合虚拟机编排,因为虚拟机有自己的生命周期,应该受到尊重。
      • 木偶不适合应用程序发布pipe理/复杂的升级。 独立的木偶运行可以被利用,但至less它不是控制木偶,而是你的包装脚本或人类机器人,这很好。
    • 木偶不是一个好的用户pipe理系统(它必须pipe理每一个用户的input,甚至是被删除的用户,都是有效的,所以find另一个解决scheme)
    • 木偶不是一个好的configuration数据库(查看使用某种外部数据库,ENC,Hiera或一些类似的胶水)

    当然,你可以用Puppet来完成所有这些事情,但这对他们来说并不是最好的解决scheme。 有时你应该放下锤子,去找扳手。

    然而Puppet却非常善于维护一台机器的基本configuration,并且安装了一些可以让你做虚拟机和释放编排,用户pipe理等工具。

    在我的情况下,我有一个引导脚本加载最小系统configuration(Ubuntu):ruby,Rubygems的,build设必不可less的,Git等我的Puppet清单保存在版本控制下,我简单地克隆存储库。 从那里,我的引导脚本假设hostname --short是有效的,并试图puppet apply /root/infrastructure/puppet/hosts/$( hostname --short ).pp

    回答你的问题:

    • 我的脚本假设基本的networking连接(DNS,IP),不pipe理或改变它;
    • 我的脚本假定机器的身份是正确的,不要改变它;
    • 我的脚本假设Ruby / Rubygems / Git是存在的,但是之后进行pipe理。

    我大多同意voretaq7,但有几个警告。

    • 我很lessconfigurationIP地址在puppet,除非系统使用DHCP(我假定大多数“云”提供者这样做)。 我曾经有过用傀儡破坏networkingconfiguration的情况,但是不能用傀儡纠正它们,因为节点没有办法联系傀儡大师。

    • 我相信,更新pipe理属于系统工具手中,我不认为用傀儡作为荣耀的克朗是一种改进。

    认为你不需要使用puppet进行networkingconfiguration。 它通常是一次configuration的东西。 你也可以得到一些废话,如果你将有一个错误(S)与IP或MAC或类似的东西会带来傀儡。