are*_*337 18 linux windows backup testing version-control
想象一下,您要管理多个服务器,这些服务器提供许多不同的服务,供许多人使用。现在假设您要重新配置或替换其中一台服务器上的某些软件。显然,您不想在生产中的服务器上工作。
如果这是代码更改,作为开发人员,我会在本地开发机器上进行更改,在本地进行测试并将更改提交到版本控制系统。然后可以将更改部署在临时环境中,进一步测试并最终部署在生产环境中。如有必要,我也很容易回滚。
一般来说,或者具体来说,您如何在系统管理中实现这一目标?
(首先想到的是使用虚拟机并将虚拟机映像置于版本控制中,但我确信有很多文献和聪明的解决方案我目前不知道。)
Dan*_*man 16
免责声明:我是 Puppet 的开发者之一。
显而易见的方法是只应用这些概念:定义一个开发/测试/生产循环,并通过它们推动更改。使用版本控制来跟踪系统。
简而言之,沿着这条路走下去会发现你真的想要自动化这些东西的工具——本质上,你想要自动化系统管理,这样你就不会在机器上使用这些技术,而是在系统上使用它们管理机器。
像工具厨师,木偶,盐和Cfengine的都是流行的工具,以解决第二个需要。他们致力于将系统管理转变为您可以进行版本控制和测试的中央解决方案。
该DevOps的运动是如何做到这一点很好的另一个信息来源。虽然这条戒律是开发人员和运营人员之间更好的合作,但它也趋向于同一方向。
nea*_*ora 15
简短的回答是“操作系统部署管理”、“配置管理”和“软件打包”。长答案如下。
我想在 Daniel Pittman 的回复中添加系统管理中构成“系统”的详细信息。
一个系统或一个环境将包括:
将这些过程包括在内,例如:
您希望将这些组合在一起以帮助您实现非功能性目标,例如:
这是一个快速的大脑转储。我相信可以将更多内容添加到所有列表中。
您的问题涉及其中的许多问题,而没有使用特定的词。例如,您希望能够轻松部署并恢复,即希望可维护性;您想在测试环境中进行测试,直到通过即可重复性、可测试性和可测量性;您正在考虑将 vm 映像置于版本控制中,因为您希望操作系统和配置部署具有可重复性。
有很多工具可以帮助您解决这个问题,Daniel 提到了其中的一些工具。其他一些是:
同样,这不是一个全面的清单,而是我脑中用来指导我的东西,希望它也能帮助你。