您如何将版本控制,测试和持续集成/部署等开发实践应用于系统管理?

Modified on: Sun, 10 Nov 2019 22:00:02 +0800

想象一下,您将要管理许多服务器,这些服务器具有许多人使用的不同服务。现在说你想在其中一台服务器上重新配置或替换某些软件。显然,您不希望在正在生产的服务器上工作。

如果这是代码更改,作为开发人员,我会在本地开发机器上进行更改,在本地测试并将更改提交到版本控制系统。然后,可以在暂存环境中部署这些更改,进一步测试并最终部署在生产环境中。如有必要,我也很容易回滚。

通常,或者具体而言,您如何在系统管理中实现这一目标?

(首先想到的是使用虚拟机并将虚拟机映像置于版本控制中,但我确信有很多文献和我现在都不知道的聪明解决方案。)

作者:arex1337

最佳答案

简短回答是“操作系统部署管理”,“配置管理”和“软件包装”。接下来是答案。

我想在Daniel Pittman的回复中加上系统管理中“系统”形式的细分。

系统或环境将包括:

  • 服务器
  • 操作系统
  • 配置
  • 供应商套餐;和
  • 本地套餐

包围这些将是以下过程:

  • 操作系统部署或映像
  • 配置管理
  • 软件包管理
  • 审计/登录
  • 监控
  • 备份

并且您希望将这些组合在一起以帮助您实现非功能性目标,例如:

  • 重复性
  • 可维护性
  • 测性
  • 性能
  • 跟踪性
  • 可测
  • 易变性

这是一个快速的脑转储。我相信可以将更多内容添加到所有列表中。

您的问题涉及其中的一些,而不使用特定的字词。例如,您希望能够轻松部署并恢复,即希望可维护性;你想在测试环境中进行测试直到它通过,即可重复性,可测试性和可测量性;您正在考虑将vm映像放在版本控制中,因为您希望操作系统和配置部署的可重复性。

有很多工具可以帮助你解决这个问题,丹尼尔提到了一些工具。其他一些是:

  • Kickstarts(基于RedHat),Preseed(基于Debian),WDS(MS Windows),用于部署已知的操作系统环境
  • Spacewalk / Satellite(基于RedHat),用于配置和包管理的组策略(MS Windows)
  • 用于生成,部署,升级和删除软件包的YUM和APT打包系统(包含一组软件的二进制文件,数据和配置)
  • Nagios,OpenNMS和SCOM用于监控
  • Amanda,Bacula和Windows备份服务器进行备份
  • Munin,PCP和Hyperic进行性能监控
  • 用于版本控制的CVS,SVN,GIT或Bazaar
  • Hudson和Jenkins的构建管理
  • 用于测试的硒和机器人
  • Bugzilla,Request Tracker和Jira用于录制,通信和跟踪

同样,这不是一份全面的清单,但是我一直在脑子里指导我,希望它也会帮助你。

作者:,nearora

相关问答

添加新评论