Linux批量/远程管理


10

除了内部IT基础架构,我们还有大约500台Linux机器托管着我们为在线世界提供的服务。它们被分组为一簇集群,例如数据库An,产品An,NFS,Backoffice等。此外,根据我们的规范和要求,它们由外部提供商管理。

但是,在(网络)软件开发,推出和部署过程中,我们会遇到很多麻烦-特别是因为开发环境和暂存环境与实时系统几乎没有任何共同点(我省去了一些讨厌的细节。) 。

因此,我尝试创建虚拟机,尽可能精确地复制各种实时系统,并准备将其连接到例如开发数据库,​​而不是对开发人员透明地连接到“真实”数据库(不是root)。这个效果很好,但是...

我想知道一个人如何可以远程和管理这些系统散装?有一些我不知道的软件系列吗?或者,至少应该熟悉一些技术或原理?

我们将为每个开发人员提供一堆要在本地运行的图像(VirtualBox)。质量检查部门。将获得虚拟群集(XEN或Hyper-V)。如果我需要提供额外的服务器模块,重新路由新的数据库连接,或者只是想更新程序包管理器提供的所有内容,那么我该怎么做而又不被迫登录每个系统和/或请我的同事下载并运行一些夹具脚本?

我相信有很多解决方案。好吧,以某种方式我太愚蠢了,无法在搜索引擎中输入正确的关键字...还是这个问题听起来不那么琐碎?

作为记录:

  • 几乎所有系统都在运行Debian GNU / Linux 6.x“ squeeze”
  • 没有开发人员被迫在其工作站上使用特定的操作系统
  • 预算当然是有限的,但是购买专有软件也不算太小
  • 首选涉及我们上述提供商的解决方案

Answers:


15

这取决于您到底需要什么以及您正在寻找什么。但总的来说,“ 配置管理 ”存在多种解决方案,例如:

  1. 木偶
  2. 厨师
  3. cfengine
  4. Ansible

等。我个人会推荐木偶,因为它有很大的社区和许多外部提供的食谱。这使您可以自动配置和管理系统。如果将它与自己的存储库和自动更新(例如)结合使用,则unattended-upgrades可以自动更新系统。

另一个解决方案是仅提供您自己的软件包(如company-baseetc),该软件包自动取决于必需的软件,并且可以自动配置系统。

您还应该研究自动化部署(准系统和虚拟化)。如果将此与配置管理或您自己的存储库结合使用,则可以轻松地自动化并重新安装系统。如果你想开始使用自动化的安装看看theforman支持libvirt的以及裸露的骨头安装和集成木偶支持。如果您想自己做,可以查看kickstart (redhat等)或“预置”来自动配置系统。对于Debian,您还可以使用debootstrap之类的东西或名为grml-debootstrap的包装程序来支持虚拟化映像。

为了帮助为您的开发人员提供VirtualBox映像,您可以看看vagrant,它允许您使用VirtualBox支持厨师,木偶和shell脚本来自定义虚拟环境,从而自动创建虚拟化系统。

如果要由现有提供商使用该解决方案,则应询问他们如何管理系统,但这可能是某种配置管理。如果可以访问配置服务器,则有可能在系统上运行他们的代理。

对于谷歌的关键字看看devopsconfiguration managementit automationserver orchestration

简而言之,要尽可能地实现自动化,甚至不要考虑手动进行操作。


1
谢谢!有很多东西要通读,但看起来很有希望。
mjhennig 2012年

@mjhennig我刚刚添加了更多信息。部署。有很多可用的资源,但是最重要的是,您不应该真正通过ssh / distributed shell自行完成工作,而是拥有某种系统。
Ulrich Dangel 2012年

2
自己做某事没有错,尤其是在可用工具不符合目的的情况下。像Puppet这样的系统本质上是系统管理工具,而不是配置管理。我使用的大多数系统甚至都不能从中央服务器访问,而是可以通过用户的笔记本电脑(通过所有功能)通过vpn访问-三年来一直在尝试对此进行更改。我们的IT部门按地区划分,因为每个地区无法正常访问彼此。在某些情况下,必须使用本地脚本。这也是创新开始的地方。
Arcege 2012年

3
@Arcege我刚刚发表了您的评论,脚本是必需的,您不必立即转换整个基础架构。最重要的部分是使事物自动化并使其可重复。但是,人偶和厨师的描述性具有一些独特的方面,例如,您可以使用来测试和验证人偶类cucumber-puppet。当然,您可以使用现有的组件来开发/成长自己的框架,但是听起来OP目前没有任何东西,如果您从头开始,我认为最好使用现有的框架。
Ulrich Dangel 2012年

是的,我同意自动化/可重复操作。我有许多自动化或按钮式本地脚本,可以在现有系统(如Jenkins / Oc4j和Subversion / Bugzilla集成)之间进行接口。我只是不同意(强烈)同意您的评论“您不应该自己真正做事”。就像我描述的那样,有时现有的框架不适用。
Arcege 2012年

3

Ulrich已经给出了有关软件部署和自动服务器设置的答案。

其背后的原理是

  • 定义服务器的外观-包括默认安装的通用软件,分区方案和文件系统布局
  • 生产,登台,测试和开发服务器在这些基本标准上应该没有什么不同(否则您以后会遇到问题,就像您一样)
  • 使用适当的变更管理来记录您所做的所有变更(包括任何配置中的单行变更)
  • 您总是在测试中,开发中,开发,生产中最后进行更改

您要求使用一种方便的工具来管理大量服务器-我个人最喜欢的是cluster-ssh(cssh)。键入一次,然后同时在许多服务器上进行更改。

如果发现问题并有解决问题的修补程序可以解决该问题,请执行以下操作:

  1. 如果修复程序确实有效,则将其应用于Test / Dev / Staging / Prod(请参见上文)
  2. 将修复程序应用于您的虚拟模板,以便将来的VM克隆不会出现该错误
  3. 将修复程序应用于您的物理安装过程(kickstart / autoyast /无论如何)
  4. 将修补程序应用于所有服务器

如果您要修复大量服务器,则必须对此过程进行充分记录,最后,另一个团队应检查是否已完全应用此修复程序。

为此,我们采用了螳螂(开源,PHP)。


2

我在多个国家/地区管理大约30种产品和几百台服务器。我是软件配置管理器,所以我(根据设计)没有root用户访问权限,(同样,由于设计)我没有接触数据库或其服务器,并且由于公司安全性而不得不跳很多麻烦。但是我确实在测试,登台和生产中管理配置,包括数据库链接和更改。我有许多脚本会结合使用sshpython和Shell脚本的脚本。

要考虑的主要事项是:

  1. 您将与服务器进行哪些类型的交互?只是文件上传?运行命令行程序?运行远程X客户端?
  2. 访问这些服务器需要什么安全级别?防火墙,安全网络,VPN?是ssh足够且位于中央安全位置?
  3. 每个服务器上可以自动化多少?您是否可以在每台服务器上安装程序并运行它,或者是否需要通过某种方式像流媒体一样ssh远程运行该程序?您可以使用脚本编写脚本expect还是仅通过命令行调用编写脚本?

VirtualBox提供了许多命令行工具,您可以通过公正ssh或像puppetUlrich提到的系统进行管理。


2
只是一个小的建议。virtualbox,请访问vagrantup.com,它可以简化和自动创建虚拟映像。
Ulrich Dangel 2012年

不幸的是,即使在远程测试环境之间进行简单的网络访问也几乎是不可能的。设置Virtualbox服务器场会更加困难。我很难要求IT用超过一年的时间来更新标准软件,因为它不是“标准RedHat”存储库的一部分。
Arcege 2012年

根据我的经验,该软件过时的原因是要么表明该软件要么停产,要么存在安全问题。网络设置/连接通常很难实现,也许可以尝试强调连接不同的测试环境如何节省金钱,简化流程,节省QA时间或使测试环境更加逼真。如果从船上的不同分支机构招募人员,这也可能会有所帮助。
Ulrich Dangel 2012年
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.