人偶不应该管理什么?


67

我正在学习一般的配置管理方式,尤其是使用puppet来实现它,我想知道系统的哪些方面(如果有的话)应该由puppet管理?

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

那么我应该从p中删除IP配置吗?还是应该在第一次启动Puppet之前进行设置,但是仍然要通过Puppet管理IP地址?具有多个IP的系统(例如WAN,LAN和SAN)如何处理?

什么IPMI?您可以使用ipmitool配置大部分(如果不是全部),从而避免获得控制台访问权限(物理,局域网串行,远程KVM等),因此可以使用puppet进行自动化。但是,在每次人偶代理运行时重新检查其状态对我来说听起来并不酷,在执行其他任何操作之前,我希望基本不访问系统。

另一个故事是关于安装更新的。我不打算讲这个特定的问题,关于SF的问题已经很多,不同系统管理员之间的哲学也很多。我本人决定不让puppet更新事物(例如仅ensure => installed),并像我们已经习惯的那样手动进行更新,而当我们对puppet更有信心时(例如,通过将MCollective添加到混合)。

这些只是我现在想到的几个例子。人偶不能忽视系统的任何方面吗?或者,换句话说,应该在供应时设置什么并在系统中“静态”配置什么与通过集中配置管理处理什么之间的界线在哪里?


1
好问题。我很好奇自己是否除了机器专用的配置之外不应该使用puppet。好吧,那是Windows机器。
HopelessN00b 2012年

6
<vague>当更好/更轻松地通过其他方式来管理人偶时,您不应管理人偶。</ vague>:p
Zoredache

1
用木偶,这些天公司的流行,我可以看到这个问题,赢得广泛关注,在未来几年内
丹尼尔·李

Answers:


24

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

具体示例(从问题中抄录,所有“这就是为什么要管理它”的叙述):


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 ...


更新

软件更新更多是一个灰色区域-在我的组织中,我们对此进行了评估,发现“非常缺乏”,因此我们将其radmind用于此目的。尽管没有理由,但是Puppet不能调用radmind -实际上,如果/当我们迁移到Puppet进行配置管理时,这正是即将发生的事情!

这里重要的是要以标准方式(组织范围内的标准或平台内的标准)安装所有更新-只要您已经过全面测试,Puppet便没有理由不启动更新过程一切确保Puppet不会弄乱任何东西。
如果您确定Puppet不能独自完成一项工作,那么也没有理由为什么Puppet不能调用更适合此任务的工具...


回复:更新。伪造运行更新程序会使您麻烦的一件事是在修补关键服务时,例如:mysql,apache-您不希望这些更新突然出现。Puppet提供了锁定那些软件包版本的方法,这就是我在享受其他螺母和螺栓的常规更新的同时避免使用的方法。
thinice 2015年

@thinice这是一个好点,但是我通常的对策是打人,然后大声喊叫REDUNDANCY :-)(radmind的情况更糟,因为这只会炸毁文件系统。我们的政策是让负载均衡器卸载一半的服务器,以便我们可以对它们进行修补/测试,然后将每个人都转移到已修补的计算机上,以便我们可以完成另一半。工作正常,但您的环境需要内置冗余。)
voretaq7

10

不要重新发明轮子。

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

我是从痛苦的经历中讲出来的。尽管ldap在这里不是选项。

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


3
我认出了所有这些字眼,但仍不确定您要说什么。
克里斯·S

2
我想说 木偶是“信息”的中心位置。DNS和LDAP也是如此。不要试图用p来做他们的工作,这是垃圾。。。我说这是因为每次新主机加入网络时,巨人的/ etc / hosts文件都被p推了。
Sirex 2012年

3
人们是否真的使用Puppet而不是LDAP来管理用户帐户?
乔尔·萨拉斯

2
每个工具都有自己的位置,但是使用puppet进行用户帐户管理或使用LDAP进行文件存储会被滥用
休伯特·卡里奥

1
这当然是AB使用...
jldugger

9
  • 木偶不是编排系统。尤其是:
    • Puppet不太适合虚拟机编排,因为虚拟机具有自己的生命周期,这一生命周期应得到尊重。
    • Puppet不太适合应用程序版本管理/复杂升级。为此,可以利用独立的木偶运行,但是至少它不是Puppet所控制,而是您的包装脚本或人工机器人,这很好。
  • Puppet不是一个好的用户管理系统(它必须管理每个用户条目,甚至删除的用户,这样才能有效。因此,请找到另一个解决方案)
  • Puppet不是一个好的配置数据库(请看使用某种外部数据库,以及ENC,Hiera或类似的胶水)

当然,您可以使用Puppet执行所有这些操作。.但这并不是它们的最佳解决方案。有时您应该放下锤子,然后去寻找扳手。

但是,Puppet非常擅长于维护计算机的基本配置,并安装可让您执行VM并发布业务流程,用户管理等的工具。


更多的小问题:可以将Puppet配置为在管理或不管理每个用户的情况下添加和删除用户。就是说…… 管理每个用户是毫无用处的,而且在管理每个用户方面也很糟糕。我使用p添加服务帐户,但不添加用户帐户。
Art Hill

2

我大体上同意voretaq7,但有几点警告。

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

  • 我坚信更新管理属于系统工具,我不认为使用puppet作为光荣的cron会有改善。


1

就我而言,我有一个引导脚本,该脚本加载了最小的系统配置(Ubuntu):Ruby,Rubygems,build-essential,git等。我的Puppet清单受版本控制,而我只是克隆存储库。从那里,我的引导脚本做出了一个hostname --short有效的假设,并尝试进行puppet apply /root/infrastructure/puppet/hosts/$( hostname --short ).pp

要回答您的问题:

  • 我的脚本假定基本的网络连接(DNS,IP),并且不对其进行管理或更改;
  • 我的脚本假定计算机的身份正确,并且不要更改它;
  • 我的脚本假定存在Ruby / Rubygems / Git,但事后进行管理。

0

认为您不需要使用p来进行网络配置。通常它是一次配置的东西。如果您在IP或MAC上有错误或其他人偶带来的类似错误,也可以得到一些废话。


2
不必手动更改100多台服务器上的默认网关吗?幸运的你;)

@EricDANNIELOU我想这可以看作是让manage管理网络接口IP配置的+1;)
Luke404'8

@EricDANNIELOU尝试使用bash,“ for”循环和适当的用户权限(将sudo转换为root或直接root)和sed / perl / etc来执行此操作。:)
Evgenii Iablokov

1
我认为bash的“ for”周期和肮脏的sed / awk / vi脚本比scm更安全的网络配置。并且一旦为其他所有内容设置了人偶,仅对网络配置使用ssh“ for”循环就不太方便了。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.