Linux 批量/远程管理

Linux 批量/远程管理

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

然而,我们在(网络)软件开发、推出和部署过程中遇到了很多麻烦 - 特别是因为开发环境和登台环境与实时系统几乎没有任何共同点(我省略了令人讨厌的细节..) 。

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

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

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

我相信有很多解决方案。好吧,不知怎的,我太愚蠢了,无法在搜索引擎中输入正确的关键字......或者这个问题不像听起来那么微不足道?

作为记录:

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

答案1

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

  1. 木偶
  2. 厨师
  3. cf引擎
  4. 安西布尔

我个人会推荐 puppet,因为它有一个很大的社区和很多外部提供的食谱。这允许您自动配置和管理系统。如果您将其与自己的存储库和自动更新结合起来,例如unattended-upgrades您可以自动更新系统。

另一种解决方案是仅提供您自己的软件包等,company-base它自动依赖于必要的软件并可以自动配置您的系统。

您还应该研究自动化部署(准系统和虚拟化)。如果您将其与配置管理或您自己的存储库结合起来,您可以轻松地自动化和重新安装系统。如果您想开始自动安装,请查看福曼它支持 libvirt 以及裸机安装,并集成了 puppet 支持。如果你想自己做,你可以看看启动 (redhat 等)或“预置”来自动配置您的系统。对于 Debian,你还可以使用类似的东西反引导程序或名为的包装器grml-debootstrap支持虚拟化图像。

为了帮助为您的开发人员提供 VirtualBox 映像,请查看流浪汉它允许您使用 VirtualBox 自动创建虚拟化系统,支持 Chef、Puppet 和 shell 脚本来自定义您的虚拟环境。

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

对于谷歌关键字,请查看devopsconfiguration management和。it automationserver orchestration

简而言之,尽可能自动化,甚至不要考虑手动完成工作。

答案2

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

这背后的原则是

  • 定义您的服务器的外观 - 这包括默认安装的常用软件、分区方案和文件系统布局
  • 生产、登台、测试和开发服务器在这些基本标准方面不应有所不同(否则您稍后会遇到问题 - 正如您所做的那样)
  • 使用适当的变更管理来记录您所做的所有更改(包括任何配置中微小的一行更改)
  • 始终首先在测试中进行更改,然后在开发中更改,然后在登台中更改,最后在生产中更改

您需要一个方便的工具来管理大量服务器 - 我个人最喜欢的是 cluster-ssh ( cssh)。输入一次并同时在许多服务器上进行更改。

如果您发现问题并采取修复措施来消除该问题:

  1. 如果修复确实有效,则将修复应用于测试/开发/暂存/生产(见上文)
  2. 将修复应用到您的虚拟模板,以便将来的虚拟机克隆不会出现该错误
  3. 将修复应用到您的物理安装过程(kickstart/autoyast/其他)
  4. 将修复应用到所有服务器

如果您面对大量服务器进行修复,则必须详细记录此过程,最后由不同的团队检查修复是否已完全应用。

为此,我们采用 Mantis(开源,PHP)。

答案3

我管理着多个国家的大约 30 个产品和数百台服务器。我是软件配置经理,所以我没有 root 访问权限(根据设计),不接触数据库或其服务器(同样,根据设计),并且由于公司安全而不得不跳过很多麻烦。但我确实管理测试、登台和生产中的配置,包括数据库链接和更改。我有许多脚本,它们使用sshpython和 shell 脚本的组合发送到服务器。

要考虑的主要事情是:

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

VirtualBox 提供了许多命令行工具,您可以通过Ulrich 提到的系统ssh或系统来管理它们。puppet

答案4

在过去的几年中,出现了一组新的极简系统,它们专注于使用脚本构建配置的能力。因为它们是编写脚本的框架,所以它们往往擅长于需要排序的任务。

皮因弗拉

pyinfra 可以超快速地大规模自动化基础设施。它可用于临时命令执行、服务部署、配置管理等

http://pyinfra.com/

柔道

简单的编排和配置管理

http://github.com/rollcat/judo

重置(1) : pln(5)

使用任何脚本语言配置系统

http://scriptedconfiguration.org/

相关内容