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

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

所以我应该省略IP配置木偶?还是应该在第一次启动Puppet之前进行设置,但是仍然要通过Puppet管理IP地址?具有多个IP的系统(例如WAN,LAN和SAN)如何处理?

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

故事是关于安装更新的。我不打算讨论这一点,关于SF的问题已经很多,而且不同系统管理员之间的哲学也很多。我本人决定不让puppet更新事物(例如,仅ensure => installed),并按照我们已经习惯的方式手动进行更新,而当我们对puppet更加有信心时(例如,通过添加MCollective

这些只是我现在脑海中浮现的几个例子。
系统中的任何方面都应该被伪造吗? br />或者,换句话说,应在供应时设置什么并在系统中“静态”配置的东西与通过集中式配置管理处理的东西之间的界限在哪里?

评论

好问题。我很好奇自己是否应该使用puppet进行机器特定的配置以外的配置。好吧,那是Windows机器。

如果更好/更轻松地以其他方式进行管理,则不应管理人偶中的事物。:p

随着近来使用Puppet的公司的普及,我可以看到这个问题在未来几年中引起了很多关注。

#1 楼

一般规则:如果您使用的是配置管理,则应尽可能管理配置的各个方面。您越集中,就越容易扩展您的环境。
特定示例(从问题中抄袭,所有“这就是您要管理它的原因”的叙述):

IP网络配置
好,当然,在将其放入机架之前,已经在计算机上配置了地址/网关/ NS。我的意思是,如果您不打算如何运行puppet来完成其余的配置?
但是说现在您要向环境中添加另一个名称服务器,并且需要更新所有计算机-不想吗?配置管理系统来为您执行此操作?
或者说您的公司被收购了,而新的母公司要求您将192.168.0.0/24地址更改为10.11.12.0/24,以适合其编号系统。
或者突然之间有了一笔庞大的政府合同-唯一的麻烦是您现在必须打开IPv6,否则交易就被取消了。...
我们想要的是网络配置管理...

IPMI配置
就像使用IP地址一样,我敢肯定您在将机器放到机架上之前就已经进行了设置-启用它是很好的常识任何具有此功能的计算机上的IPMI,远程控制台等,这些配置不会有太大变化...
...直到我在IP Con上图-您被迫腾出这192.168个网络地址的原因是,根据新的公司霸主,这是IPMI土地,并且您现在必须立即更新所有IPMI卡,因为它们将践踏某个人的保留地IP空间。
好,这里有点麻烦,但是就像您说的那样-所有这些都可以通过ipmitool进行管理,所以为什么不让Puppet在执行其他所有操作时运行该工具并确认配置东西?我的意思是它不会伤害任何东西,所以我们也可能包括IPMI ...

更新
软件更新更多地是灰色区域-在我的组织中,我们对此进行了评估,发现“非常缺乏”,因此我们使用radmind进行此操作。 Puppet没有理由不能调用radmind-实际上,如果/当我们迁移到Puppet进行配置管理时,这正是将要发生的事情。
这里重要的是要以标准方式安装所有更新(无论是整个组织的标准,还是平台内部的标准)-只要您已经对所有内容进行了全面测试以确保Puppet不会弄乱任何东西,那么Puppet没有理由不应该启动更新过程。
如果您确定Puppet不能独自完成一项工作,那么也没有理由为什么Puppet不能调用更适合此任务的工具...

评论


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

–瘦身
2015年4月24日19:06



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

–voretaq7
15年4月24日在21:04

#2 楼

不要重新发明轮子。

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

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

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

评论


我认出了所有这些字眼,但仍不确定您要说什么。

–克里斯S
2012年8月7日,0:18

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

– Sirex
2012年8月7日,0:24

人们是否真的使用Puppet而不是LDAP来管理用户帐户?

–乔尔·萨拉斯(Joel E Salas)
2012年8月8日,0:30

每个工具都有自己的位置,但是使用puppet进行用户帐户管理或使用LDAP进行文件存储会被滥用。

–休伯特·卡里奥(Hubert Kario)
2012年12月13日23:35

肯定是滥用...

– jldugger
2013年1月1日19:28

#3 楼


P不是编排系统。特别是:


Puppet不太适合VM编排,因为VM具有自己的生命周期,应予以尊重。
Puppet不太适合应用程序版本管理/复杂升级。为此,可以利用独立运行的木偶程序,但是至少它不是Puppet所控制,而是您的包装脚本或人工机器人,这很好。


Puppet不好用户管理系统(它必须管理每个用户条目,甚至删除的用户,这样才能有效。因此,找到另一种解决方案)
木偶不是一个好的配置数据库(请看使用某种外部数据库和ENC) ,希拉(Hiera)或其他类似的胶水)

当然,您可以使用Puppet来完成所有这些操作。有时您应该放下锤子,然后去寻找扳手。

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

评论


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

– Art Hill
18-10-10在22:45



#4 楼

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

回答您的问题:


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


#5 楼

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


我很少在puppet中配置IP寻址,除非系统使用DHCP(我假设大多数大型“云”提供商会这样做这个)。我曾经遇到过使用puppet破坏网络配置的情况,但由于该节点无法联系puppetmaster而无法使用puppet纠正它们。
我坚信更新管理属于系统工具,我不认为将木偶用作荣耀的cron会有改善。


#6 楼

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

评论


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

–user130370
2012年8月6日在21:36

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

–Luke404
2012年8月6日23:01

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

– Evgenii Iablokov
2012年8月7日4:37

我认为bash的“ for”周期和肮脏的sed / awk / vi脚本在网络配置方面比scm更安全。并且一旦为其他所有内容设置了人偶,仅对网络配置使用ssh“ for”循环就不太方便了。

–user130370
2012年8月7日上午10:38