pQd Asked: 2009-06-29 02:30:03 +0800 CST2009-06-29 02:30:03 +0800 CST 2009-06-29 02:30:03 +0800 CST 小规模的自动化 linux 部署和配置管理 - 值得吗? 772 我即将部署 ~25 台运行Debian的服务器。这些机器将具有不同的角色——Web 服务器、Java 应用服务器、代理、MySQL 机器。未来环境可能不会增长太多 - 未来 2 年可能会增加 2-5 台服务器。 我可能会使用fai进行系统安装,但我不确定是否值得为如此小规模添加cfengine或puppet集中配置管理。 对于这种规模的环境,配置管理是否有意义? linux debian configuration-management automated-install 7 个回答 Voted Best Answer David Pashley 2009-06-29T02:47:25+08:002009-06-29T02:47:25+08:00 我建议使用 Debian 预播的混合,你给安装程序一个文本文件来回答它会问的所有问题,和 Puppet。 使用预置而不是 FAI 的原因是您不必先设置映像并处理使其保持最新状态。您最终将获得与手动完成所有安装非常相似的安装。当您安装新版本时,您必须使用更改更新配置文件,而不必重建新映像。 当您有多个服务器执行相同的角色并且您希望它们相同时,配置管理工具特别有用,例如网络服务器集群。但是,它们对于配置所有服务器的基本安装也很有用。您将希望在所有服务器上安装特定的软件包,例如 ntpd 和 MTA。您将要更改所有服务器上的配置文件。另一个好处是您可以将清单保存在 subversion 中,并记录服务器上发生的更改以及更改的人员和原因。在服务器发生故障并且您需要快速重建它的情况下,配置管理也可以挽救生命。安装操作系统(使用 FAI 或预置),安装 puppet 并离开它,完全按照以前的方式构建。显然,您需要保留数据备份。 配置管理需要奉献精神,以确保您只使用它进行更改,并且将有前期成本设置,但是一旦您有了工作设置,您将不会后悔。 Puppet 是您提到的两种工具中更现代的一种。我真的向任何人推荐它。配置是一种声明性语言,易于构建更高级别的结构。它周围还有一个非常大的社区,总是欢迎人们在邮件列表或 IRC 频道上提供帮助。 nixgeek 2009-06-29T02:35:48+08:002009-06-29T02:35:48+08:00 我建议将 CFengine 用于任何超过 2-3 个框并且您有一些“模板”概念或执行特定角色的服务器的环境。 为什么?简而言之,它减少了错误,您拥有一个工具,可以确保文件/目录权限在环境中的任何地方都是正确的,并且当您推出更多服务器时,该工具绝对可以处理所有事情并且从不犯任何错误。 与之相比,即使是熟练的系统管理员在 12 小时轮班结束时推出 Web 服务器时,事情已经出错了......他们是否可能记得需要进入 /etc/random/location 的讨厌的小配置文件/foo/bar 否则应用程序将默默地无法做一些相当重要的事情,比如账单客户?:) 像 CFengine 这样的工具也是执行环境范围安全更新的好方法。将 Nagios 配置 (NRPE) 放到所有盒子上也是轻而易举的事。无论您是处理五个盒子还是五百个盒子,您都可以使用 CFengine 节省时间。 可能值得注意的是,我的环境稍微大一点,但是我也为比你注意到的更小的环境部署了 CFengine,因此推荐! 可能你的下一个问题是 CFengine vs Puppet?这是一个更困难的决定,而且我总是选择 CFengine,因为(在早期)Puppet 的一些不成熟,特别是在错误记录方面......这些天我真的不确定 - 有一个游戏'n see?回顾我与 Puppet 的具体问题,它们与 SSL 证书相关,痛苦地回忆起我花了 3 个小时诊断 irc.freenode.net/#puppet 中的服务器 <-> 客户端连接问题的时间,其中有一些庞大的 RTFM 和 RTFS才发现一个错误,没有被记录,卢克说,“啊,这真的很难修复”,但从来没有。:( Jauder Ho 2009-06-29T12:11:27+08:002009-06-29T12:11:27+08:00 除了 cfengine 和 puppet,还有chef。我强烈建议使用其中一种工具,因为事情总是会朝着意想不到的方向发展。这有助于在集中位置管理事物。 要认识到的重要一点是,你可能不会得到所有东西,但如果你至少能得到 90%,那就是一个开始。此外,它很有趣,从长远来看会让你的生活更轻松。最后,前进是一项很好的技能。 ThorstenS 2009-07-02T09:11:03+08:002009-07-02T09:11:03+08:00 自从 5 年以来,我一直在使用 cfengine 来安装 debian(现在从 woody 到 lenny)。使用 etch 我构建了一个自定义的 debian-installer。感谢 preseed 出现了一个问题:“主机名是什么”。在此 cfengine 配置整个服务器之后(dns+dhcp 与 dnssec、samba、ntpd、默认 (Samba) 用户和密码、ssh、openvpn、apache vHosts、在 LVM 上使用 rsnapshot 备份、自定义 webminmodules 等)。 即使我只安装一台服务器,我也会使用工具箱中的 cfengine-scripts,如下所示: 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 脚本在某种程度上是人类可读的。 因此,使用自动配置管理工具是绝对值得的。 /索斯滕 SAnnukka 2010-01-25T11:08:56+08:002010-01-25T11:08:56+08:00 即使对于一个小网站,它也必须是值得的。随着您的成长,一切都与一致性有关。而且您知道您的网站将会增长。最好在你还小的时候开始。Cfengine 很棒。尤其是版本 3,它可以处理整个领域的所有包管理器,它真正的轻量级和安全性,并且“正常工作”。Puppet 只是没有提供它声称的东西。没试过大厨。 cfengine 相对于其他的优势在于它是超轻量级的,但实际上具有更多功能。它的安全性就像 ssh,而不是 puppet 使用的网络证书。当我告诉我的老板关于 cfengine 的事情时,他认为这是科幻小说 :) 如果您正在寻找未来主义的东西,请尝试阅读 Marc Burgess 的一些研究论文。很酷的东西。 ericslaw 2009-06-29T08:04:22+08:002009-06-29T08:04:22+08:00 在运行小型站点时,我希望拥有的第一个工具是“按钮”构建。它使修补、更新和重建更容易,这可以解决未来的无数其他问题。 所有盒子上都没有正确安装 ssh?也没有 curl/wget/vim?您想在每个盒子上安装的其他内部工具怎么样? 对服务器进行集中管理是您应该使用的首批工具之一,以使未来的工作更加轻松。 Anders 2010-07-02T11:14:41+08:002010-07-02T11:14:41+08:00 我同意这里的每一个人。当您规模不大时,您应该开始学习并建立一个工作基础设施。因为那样你就在成长时做好了准备。 根据您想要运行的内容,我会选择 FAI、cfengine 和 Debian/Ubuntu 的预播。FAI 可以与许多不同的工具一起使用,因此对于任何类似 Debian 的发行版来说,它都是一个好的开始。使用 FAI(和 cfengine)类控制的配置,您可以轻松地将安装划分为小模块,然后您可以为每台机器选择要使用的模块。这样,即使您有许多不同的机器,它也会很有用。它实际上更有用,因为您将使用这些脚本记录您的安装。当您在新机器上安装时,您不会忘记任何东西。 是的,在您在实时安装中部署更改之前,您应该有一些机器可以测试。但是使用这样的配置脚本,您不会忘记在实时安装中执行任何步骤。
我建议使用 Debian 预播的混合,你给安装程序一个文本文件来回答它会问的所有问题,和 Puppet。
使用预置而不是 FAI 的原因是您不必先设置映像并处理使其保持最新状态。您最终将获得与手动完成所有安装非常相似的安装。当您安装新版本时,您必须使用更改更新配置文件,而不必重建新映像。
当您有多个服务器执行相同的角色并且您希望它们相同时,配置管理工具特别有用,例如网络服务器集群。但是,它们对于配置所有服务器的基本安装也很有用。您将希望在所有服务器上安装特定的软件包,例如 ntpd 和 MTA。您将要更改所有服务器上的配置文件。另一个好处是您可以将清单保存在 subversion 中,并记录服务器上发生的更改以及更改的人员和原因。在服务器发生故障并且您需要快速重建它的情况下,配置管理也可以挽救生命。安装操作系统(使用 FAI 或预置),安装 puppet 并离开它,完全按照以前的方式构建。显然,您需要保留数据备份。
配置管理需要奉献精神,以确保您只使用它进行更改,并且将有前期成本设置,但是一旦您有了工作设置,您将不会后悔。
Puppet 是您提到的两种工具中更现代的一种。我真的向任何人推荐它。配置是一种声明性语言,易于构建更高级别的结构。它周围还有一个非常大的社区,总是欢迎人们在邮件列表或 IRC 频道上提供帮助。
我建议将 CFengine 用于任何超过 2-3 个框并且您有一些“模板”概念或执行特定角色的服务器的环境。
为什么?简而言之,它减少了错误,您拥有一个工具,可以确保文件/目录权限在环境中的任何地方都是正确的,并且当您推出更多服务器时,该工具绝对可以处理所有事情并且从不犯任何错误。
与之相比,即使是熟练的系统管理员在 12 小时轮班结束时推出 Web 服务器时,事情已经出错了......他们是否可能记得需要进入 /etc/random/location 的讨厌的小配置文件/foo/bar 否则应用程序将默默地无法做一些相当重要的事情,比如账单客户?:)
像 CFengine 这样的工具也是执行环境范围安全更新的好方法。将 Nagios 配置 (NRPE) 放到所有盒子上也是轻而易举的事。无论您是处理五个盒子还是五百个盒子,您都可以使用 CFengine 节省时间。
可能值得注意的是,我的环境稍微大一点,但是我也为比你注意到的更小的环境部署了 CFengine,因此推荐!
可能你的下一个问题是 CFengine vs Puppet?这是一个更困难的决定,而且我总是选择 CFengine,因为(在早期)Puppet 的一些不成熟,特别是在错误记录方面......这些天我真的不确定 - 有一个游戏'n see?回顾我与 Puppet 的具体问题,它们与 SSL 证书相关,痛苦地回忆起我花了 3 个小时诊断 irc.freenode.net/#puppet 中的服务器 <-> 客户端连接问题的时间,其中有一些庞大的 RTFM 和 RTFS才发现一个错误,没有被记录,卢克说,“啊,这真的很难修复”,但从来没有。:(
除了 cfengine 和 puppet,还有chef。我强烈建议使用其中一种工具,因为事情总是会朝着意想不到的方向发展。这有助于在集中位置管理事物。
要认识到的重要一点是,你可能不会得到所有东西,但如果你至少能得到 90%,那就是一个开始。此外,它很有趣,从长远来看会让你的生活更轻松。最后,前进是一项很好的技能。
自从 5 年以来,我一直在使用 cfengine 来安装 debian(现在从 woody 到 lenny)。使用 etch 我构建了一个自定义的 debian-installer。感谢 preseed 出现了一个问题:“主机名是什么”。在此 cfengine 配置整个服务器之后(dns+dhcp 与 dnssec、samba、ntpd、默认 (Samba) 用户和密码、ssh、openvpn、apache vHosts、在 LVM 上使用 rsnapshot 备份、自定义 webminmodules 等)。
即使我只安装一台服务器,我也会使用工具箱中的 cfengine-scripts,如下所示:
我喜欢 cfengine,因为 cf2 脚本在某种程度上是人类可读的。
因此,使用自动配置管理工具是绝对值得的。
/索斯滕
即使对于一个小网站,它也必须是值得的。随着您的成长,一切都与一致性有关。而且您知道您的网站将会增长。最好在你还小的时候开始。Cfengine 很棒。尤其是版本 3,它可以处理整个领域的所有包管理器,它真正的轻量级和安全性,并且“正常工作”。Puppet 只是没有提供它声称的东西。没试过大厨。
cfengine 相对于其他的优势在于它是超轻量级的,但实际上具有更多功能。它的安全性就像 ssh,而不是 puppet 使用的网络证书。当我告诉我的老板关于 cfengine 的事情时,他认为这是科幻小说 :) 如果您正在寻找未来主义的东西,请尝试阅读 Marc Burgess 的一些研究论文。很酷的东西。
在运行小型站点时,我希望拥有的第一个工具是“按钮”构建。它使修补、更新和重建更容易,这可以解决未来的无数其他问题。
所有盒子上都没有正确安装 ssh?也没有 curl/wget/vim?您想在每个盒子上安装的其他内部工具怎么样?
对服务器进行集中管理是您应该使用的首批工具之一,以使未来的工作更加轻松。
我同意这里的每一个人。当您规模不大时,您应该开始学习并建立一个工作基础设施。因为那样你就在成长时做好了准备。
根据您想要运行的内容,我会选择 FAI、cfengine 和 Debian/Ubuntu 的预播。FAI 可以与许多不同的工具一起使用,因此对于任何类似 Debian 的发行版来说,它都是一个好的开始。使用 FAI(和 cfengine)类控制的配置,您可以轻松地将安装划分为小模块,然后您可以为每台机器选择要使用的模块。这样,即使您有许多不同的机器,它也会很有用。它实际上更有用,因为您将使用这些脚本记录您的安装。当您在新机器上安装时,您不会忘记任何东西。
是的,在您在实时安装中部署更改之前,您应该有一些机器可以测试。但是使用这样的配置脚本,您不会忘记在实时安装中执行任何步骤。