基础设施的发布管理

Box*_*cks 7 infrastructure

有没有人像软件开发一样使用发布管理原则来管理基础设施?

我在系统管理领域工作了 10 多年,我还没有接触过一家使用发布管理原则以软件开发方式管理服务器基础设施和应用程序配置的公司。诸如外部化配置、在版本化存储库中检查配置、将配置自动部署到系统、通过适当的非生产环境进行推广、组件的自动化单元测试等。

我很好奇任何人用来管理这些配置和部署的应用程序和流程。此外,如果为配置部署创建发行说明是任何人都会做的事情吗?

附加评论- 我同意盲目订阅方法论框架不会让你成为一个更好的组织,这不是我要问的。我试图确定是否有某些概念可以像应用于软件开发一样应用于系统管理。例如,如果我想在 prod 中对系统进行配置更改,我怎么知道我在 dev 中测试的内容真正转移到了 prod 中?我想说的是,如果您有一个系统,该系统将配置签入存储库,进行版本控制,然后自动部署到生产环境中的系统,这将大大有助于确保部署到生产环境后一切正常。

Phi*_*ack 5

我实际上花了很多时间思考这个问题。在我的大型互联网公司,我的工作是对在我们许多服务器上运行的软件进行内部发布管理。我们实际上做了很多工作来尝试将发布管理原则应用于基础设施或系统管理。虽然我们的软件包系统对外开放,但一般原则应该是一样的。

下面是一个例子:过去,当设置 Web 服务器时,管理员必须记住将 vip 地址设置为回送地址的别名,以使机器旋转。我们不断地与机器被换掉而这一重要步骤被遗漏作斗争。结果将是一个服务器坐在那里准备好,但无法提供流量,因为 vip 将其标记为停机。

我们使用的解决方案是我们集成到我们的一般版本中的软件包。我们有一个模板系统,可为大约 600 个服务器场中的每一个生成特定于服务器场的设置。然后,当安装匹配的软件包时,打包系统会应用这些设置。

因此,我们创建的这个相对简单的包只是采用了 per-farm 设置并将其设置在系统环回上。这完全消除了系统被 vip 意外标记为关闭的问题。

我们也将这种方法应用于系统的其他部分。结果是我们逐渐将大部分系统配置转移到我们的软件发布系统中。我们构建和分发包含所有必要软件包的软件版本。这些包依次获取每个场的设置并将它们应用于修复诸如环回地址之类的问题。

这仍然是一个相当高级别的机制。还有其他系统可确保在服务器上加载基本操作系统并安装 sysadmin 用户帐户。但是,一旦您超过该级别,我们会非常努力地将所有可能的系统配置移动到设置中,然后由包读取这些设置。我们对这种管理大约 10,000 台服务器的方法感到非常满意。