自动化的Linux部署和小规模的configurationpipe理 – 值得吗?

我即将部署运行Debian的〜25台服务器。 机器将有不同的angular色 – networking服务器,Java应用服务器,代理服务器,MySQL盒子。 未来的环境可能不会增长太多 – 未来2年可能会增加2-5台服务器。

我可能会使用fai进行系统安装,但是我不确定是否值得添加cfengine或puppet集中式configurationpipe理。

configurationpipe理对于这种规模的环境是否有意义?

    我build议使用Debian预播的混合体,在那里给安装程序一个文本文件,它将回答所有问题,以及Puppet。

    使用预置而不是FAI的原因是,您不必先设置图像,然后处理更新。 如果你手动完成的话,你的安装将会非常相似。 当您安装新版本时,您将不得不使用更改来更新configuration文件,而不必重新构build新映像。

    configurationpipe理工具在多个服务器执行相同angular色并且希望它们相同的情况下特别有用,例如web服务器群集。 但是,它们也可以用于configuration所有服务器的基本安装。 您将要在所有服务器上安装特定的软件包,如ntpd和MTA。 你将要更改所有服务器上的configuration文件。 另外一个好处就是你可以将你的清单保存在subversion之类的东西里,并logging下服务器上发生了什么变化以及是谁做的,为什么。 在服务器出现故障的情况下,configurationpipe理也可以作为救命稻草,您需要快速重build。 安装操作系统(使用FAI或预先安装),安装木偶然后将其安装回去,与以前完全一样。 显然你需要保留数据的备份。

    configurationpipe理需要专注,以确保您只使用它进行更改,并将有一个前期成本设置的东西,但一旦你有一个工作设置,你不会后悔。

    木偶是你提到的两个工具中最现代的。 我真的推荐给任何人。 configuration是一种声明性的语言,很容易build立更高层次的结构。 周围还有一个非常大的社区,总是有人欢迎在邮件列表或IRC频道上提供帮助。

    我build议CFengine的任何环境超过2-3箱,并且你有一些“模板”或服务器执行特定angular色的概念。

    为什么? 简单地说,它减less了错误,你有一个工具,它将确保文件/目录权限在环境中到处都是正确的,当你推出更多的服务器时,该工具绝对处理所有事情,从不犯任何错误。

    与技术娴熟的系统pipe理员在十二小时轮class时间结束时推出一个Web服务器,当事情已经出错的时候,他们可能会记得那些需要进入/ etc / random / location的令人讨厌的小configuration文件/ foo / bar,否则应用程序将默默无闻地做一些相当重要的事情,比如账单客户? 🙂

    像CFengine这样的工具也是执行环境安全更新的好方法。 将Nagiosconfiguration(NRPE)丢到所有的盒子上也是一件轻而易举的事情。 无论你处理五箱还是五百箱,你都可以节省CFengine的时间。

    可能值得注意的是我的环境稍微大一些,但是我也已经将CFengine部署在比您注意的更小的环境中,因此推荐!

    可能你的下一个问题是CFengine vs Puppet? 这是一个更加困难的决定,而且我一直都在CFengine上工作,因为(早期)Puppet还有一些不成熟的地方,特别是在错误日志logging方面….现在我真的不确定 – 有没有看到戏? 回头看我与Puppet的具体问题,他们是SSL证书相关,痛苦地还记得我花了3个小时诊断服务器< – >客户端连接问题在irc.freenode.net/#puppet与一些RTFM和RTFS 只是为了find一个错误,没有被logging下来,卢克说:“这真的很难解决”,从来没有。 🙁

    除了cfengine和木偶,还有厨师 。 我强烈build议使用这些工具之一,因为事情总是会在意想不到的方向发展。 这有助于在一个集中的位置pipe理事物。

    重要的是要认识到,你不可能得到所有的东西,但如果你至less可以获得90%的收益,这是一个开始。 此外,这很有趣,并会使你的生活更容易长远。 最后,这是一个很好的技能前进。

    我使用cfengine 5年来安装debian(从木质到现在lenny)。 随着蚀刻我build立一个定制的debian安装程序。 感谢preseed一个单一的问题出现:“什么是主机名”。 cfengineconfiguration整个服务器(dns + dhcp,包括dnssec,samba,ntpd,默认(Samba)用户和密码,ssh,openvpn,apache vHosts,LVM上的rsnapshot备份,自定义webminmodules等)。

    即使我只安装一台服务器,我也可以使用我的工具箱中的cfengine脚本:

    control: Repository = ( $(CFREPO) ) IfElapsed = ( 0 ) Syslog = ( on ) actionsequence = ( editfiles shellcommands ) CPTYPE = ( sum ) editfiles: { /etc/sysctl.conf # don't spam on tty: BeginGroupIfNoSuchLine "kernel.printk.*=.*2 4 1 7" DeleteLinesMatching "^kernel.printk.*=.*" Append "kernel/printk=2 4 1 7" EndGroup # no E(xplicit?) C(ongestion) N(otification) BeginGroupIfNoSuchLine "net.ipv4.tcp_ecn.*=.*0" DeleteLinesMatching "^net.ipv4.tcp_ecn.*=.*" Append "net/ipv4/tcp_ecn=0" EndGroup BeginGroupIfNoSuchLine "net.ipv4.ip_forward.*=.*1" DeleteLinesMatching "^net.ipv4.ip_forward.*=.*" Append "net/ipv4/ip_forward=1" EndGroup DefineClasses "configchange_sysctl" } shellcommands: configchange_sysctl:: "/sbin/sysctl -p /etc/sysctl.conf" # vim: set ts=2: 

    我喜欢cfengine,因为cf2脚本有些人可读。

    所以它值得使用自动configurationpipe理工具。

    /托尔斯滕

    即使是一个小的网站也是值得的。 它随着你的成长而变化。 而且你知道你的网站将会增长。 最好开始,而你仍然很小。 Cfengine真棒。 尤其是第3版,它可以处理整个领域的所有软件包pipe理器,而且它的真正的轻量级和安全性,它“只是工作”。 木偶只是没有提供它声称的东西。 还没有尝试厨师。

    cfengine比其他的优点是超轻量级,但实际上有更多的function。 它的安全性就像ssh,而不是puppet使用的web证书。 当我告诉我的老板cfengine他认为这是科幻小说:)如果你正在寻找未来的东西,请尝试阅读一些Marc Burgess的研究论文。 很酷的东西。

    我希望在运行一个小型站点时使用的头号工具是“button式”构build。 它使修补,更新和重build更容易,可以解决将来无数其他问题。

    没有正确安装所有的盒子上的SSH? 没有curl / wget / vim吗? 那么你希望每个盒子上的其他内部工具呢?

    对您的服务器进行集中pipe理是您应该努力使未来工作更容易的首要工具之一。

    我同意这里的每一个人。 当你不大时,你应该开始学习和build立一个工作基础设施。 因为那时你就成长了。

    根据你想要运行的,我会去为FAI,cfengine和Debian / Ubuntu预播种。 FAI可以使用许多不同的工具,因此对于任何类似Debian的发行来说,这是一个良好的开端。 使用FAI(和cfengine)级别控制的configuration,您可以轻松将您的安装划分为小型模块,然后您可以select为您的每台机器使用哪一个。 这样,即使你有很多不同的机器,它也是有用的。 它实际上更有用,因为您将用这些脚本来logging您的安装。 而当你安装在新机器上时,你不会忘记任何东西。

    是的,您应该有一些机器可以testing,但是您需要在实时安装中部署更改。 但是使用这样的configuration脚本,您将不会忘记在实时安装中执行任何操作。