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


18

想象一下,您将要使用许多人使用的多种服务来管理许多服务器。现在说您要在这些服务器之一上重新配置或替换某些软件。显然,您不想在生产中的服务器上工作。

如果这是代码更改,那么作为开发人员,我将在本地开发计算机上进行更改,在本地进行测试,然后将更改提交到版本控制系统。然后可以将这些更改部署在登台环境中,进行进一步测试,最后部署在生产环境中。如果需要,我也很容易回滚。

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

(首先想到的是使用虚拟机并将虚拟机映像置于版本控制中,但是我敢肯定,目前尚不了解很多文献和聪明的解决方案。)


您是否在询问技术工具或用于管理此类事物的框架?因为如果不提及ITIL学科的变更和发布管理之类的内容,就很难谈论后者。
罗伯·摩尔

@ DJPon3我想了解一般方法(如何思考)以及实现该方法的工具。随意使用我的最后一段作为起点。
arex1337

Answers:


15

简短的答案是“ OS部署管理”,“配置管理”和“软件打包”。接下来是很长的答案。

我想在丹尼尔·皮特曼(Daniel Pittman)的答复中补充一下系统管理中形成“系统”的细目。

一个系统或环境将包括:

  • 伺服器
  • 操作系统
  • 组态
  • 供应商套餐;和
  • 本地套餐

封装这些将是如下过程:

  • 操作系统部署或映像
  • 配置管理
  • 软件包管理
  • 审核/记录
  • 监控方式
  • 后备

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

  • 重复性
  • 可维护性
  • 可测性
  • 性能
  • 可追踪性
  • 可测性
  • 可变性

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

您的问题涉及其中一些,而没有使用特定的词。例如,您希望能够轻松部署并还原,即需要可维护性;您想在测试环境中进行测试,直到通过,即可重复性,可测试性和可测量性;您正在考虑将虚拟机映像置于版本控制中,因为您希望OS和配置部署具有可重复性。

有很多工具可以帮助您完成此任务,但Daniel提到了其中的一些工具。其他一些是:

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

再说一次,这不是一个全面的清单,但是我一直在想着要指导我的东西,希望它也能对您有所帮助。


什么是马文?我找不到对此的引用,或者这是一个错字?
thelsdj

s / Marvin / Hudson /-感谢您发现@thelsdj :-)
Nearora 2012年

16

免责声明:我是Puppet的开发人员之一。

显而易见的方法是仅应用这些概念:定义开发/测试/生产的周期,并在其中进行更改。使用版本控制来跟踪系统。

简而言之,从这条道路上开始会导致发现您真的想要使这些事情自动化的工具-本质上就是要使系统管理自动化,以便您不在机器上使用这些技术,而在系统上使用它们。管理机器。

诸如ChefPuppetSaltCFEngine之类的工具都是可以满足第二需求的流行工具。它们朝着将系统管理转变为可进行版本控制和测试的中央解决方案的总体方向工作。

DevOps的运动是如何做到这一点很好的另一个信息来源。虽然该规章是开发人员和运营人员之间更好的合作,但它也倾向于同一方向。


15
现在我们知道该骚扰我们的人偶问题了……
ewwhite

1

在Windows环境中,System Center 2012解决了与应用程序生命周期管理有关的这些问题。

在System Center Virtual Machine Manager(SCVMM)中,使用“服务模板”(例如,经典的三层服务)定义服务,将执行环境定义为“云”(例如,开发,登台,生产)。可以对服务模板进行版本控制,并以自动化的方式部署到不同的云中。在幕后,SCVMM负责配置,部署和配置虚拟化硬件(VM等)和软件(操作系统,应用程序组件等)。

从过程的角度来看,System Center Service Manager是将其联系在一起的部分。例如,问题管理和变更控制。

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.