配置管理:您需要知道的一切

配置管理

配置管理是成功的技术平台的重要组成部分。 优秀的技术主管会想知道实施它需要什么。 配置管理的主要目标是对这些数据进行分类,以便您可以迅速而自信地采取行动。 配置管理用于许多项目管理方法,但它在软件开发环境中尤为重要。
让我们回顾一下配置管理的定义,因为它与开发以及您在组织中用于实施它的工具有关。

什么是配置管理?

配置管理是对组织的物理和虚拟系统以及与这些资产关联的元数据进行分类和跟踪的过程。 配置管理用于软件开发,以优化生产环境的应用程序配置,以减少停机时间。

捕获组织的多个系统的元数据是配置管理的主要焦点。 以这种方式,开发团队不仅知道可以访问哪些服务器,还知道每个服务器正在运行哪些操作系统以匹配其应用程序的操作要求。

密码和 API 密钥等秘密、API 等外部连接的端点以及 RAM 需求等计算规范是配置元数据的其他实例。

它同样关注系统及其元数据的清点,以及对这些资产所做的任何修改的跟踪。 如果智能手机型号在假设情况下突然发生变化,则必须通知您,以便您调整对合适充电器的搜索。 对于他们的软件配置、开发和运营团队,需要相同水平的专业知识。

为什么配置管理很重要?

对于许多团队来说,配置管理历来是次要职责。 配置数据通常不保存在核心数据库或版本控制系统中。 当谈到 DevOps 周期的操作部分时,配置数据至关重要。
如果您首先考虑如果配置管理不存在会发生什么情况,就会更容易理解配置管理的重要性。

配置管理不充分或不存在的代价

缺乏统一的知识库是没有配置管理的软件开发生命周期的一个显着缺点。 构成生产环境的许多系统的元数据可能分布在多个文件和工作站中,导致 API 密钥和密码等关键信息变得分散。 查找此数据会减慢管道速度。

这种缺乏可见性的另一个缺点是很难将应用程序的测试环境与其将要运行的生产环境相匹配。 这种不匹配会危及性能测试的质量,因为程序运行时的操作设置可能与演示环境中的操作设置有很大不同。 更糟糕的是,软件中的错误配置可能会阻止其部署到生产环境中。

错误配置会损害性能并可能导致不合规。 例如,如果数据存储在允许的数据库之外,应用程序可能会违反数据隐私要求。 或者,如果开发团队缺乏准确的清单,他们可能无法正确跟踪哪些软件已在哪些系统上更新,从而违反网络安全标准并产生漏洞。

出色的配置管理优势

DevOps 团队从配置管理中受益匪浅。 如上一节所示,它提供的可见性对于开发团队在开发和维护应用程序时可以考虑的系统和服务的统一目录至关重要。

根据配置管理,文档是这种可见性的关键组成部分。 这有助于新工程师入职,并保证其他人可以快速了解操作环境,以便在需要快速响应的紧急情况下更加有效。

由于配置管理,生产环境的分析和确保测试环境匹配都是简单的过程。 这降低了部署的风险,因为应用程序更有可能按计划执行,并且针对它运行的测试代表了实际的软件需求。 当应用程序停机时间对财务产生影响时,建议尽可能减少风险因素。

最后,它有助于在发生中断或其他意外事件时进行灾难恢复。 可追溯性是配置管理的基本要素,因此将升级回滚到软件的最新已知稳定版本相对简单。 这使项目能够在团队致力于长期解决方案的同时继续履行业务职责。

既然您了解了出色的配置管理的好处,让我们看看如何在您的公司中实施它。

配置管理策略是什么样的?

配置管理计划侧重于四个方面。 让我们逐一检查。

#1。 发现

盘点现有系统是第一步。 编目应该在对应用程序的测试和操作很重要的所有上下文中进行。 发现过程接下来将转向将您识别的项目的元数据收集到一个中央存储库中。 这个单一的真实来源会将这些数据存储在数据文件中,并在保存之前非常小心地加密任何敏感数据,例如密码和密钥。

#2。 基准

发现过程完成后,您可以分析组装的配置数据以创建成功操作的基线。 换句话说,基准测试是程序正常运行所需配置的基线。 这些参数可以通过检查正在运行的应用程序及其周围环境来找到。

#3。 版本控制

配置管理广泛地包括版本控制。 使用像 Git 这样的版本控制系统并跟踪您的配置数据文件将导致所做的任何更改的可验证历史记录。 如果升级中断了应用程序,版本控制还可以更轻松地回滚到早期版本。

#4。 审查

使用版本控制系统的一个单独但重要的优点是它允许您将配置数据保存在与代码相同的存储库中,防止未经授权的更改。 您可以将编辑功能限制为特定团队成员,并设计一个批准流程,以便任何配置更改在应用到应用程序之前都需要事先批准。

因为整个团队都可以检查存储库中的配置文件,所以这促进了问责制、消除了风险并促进了合作。

配置管理如何与 DevOps、持续交付和其他技术联系起来……

到目前为止,您应该对配置管理是什么以及它努力做什么有了很好的理解。 在我们研究工具之前,我想探讨一下配置管理如何与其他软件开发概念(如敏捷、DevOps、持续集成、持续交付和 Docker)相结合,以便您了解这些概念如何与配置管理思想相结合。

敏捷与配置管理兼容吗?

是的。 敏捷软件,顾名思义,代表希望更快地对我们的软件进行更改以适应市场需求。 配置管理使我们能够在安全管理变更的同时保持高速。

配置管理和 DevOps:它们如何配合?

DevOps 是敏捷概念在开发和运营部门的应用。 事实上,DevOps 旨在使两个部门的目标保持一致。 在一些公司,开发部门追求变化,而运营部门寻求稳定。 另一方面,采用 DevOps 的公司既寻求已部署资产的稳定性,又寻求变更频率。 然而,实现这一结果需要文化转变。

配置管理与敏捷一样,让团队有信心快速做出改变。 组织根据敏捷原则将管理任务分配给开发团队,授权他们提供、配置和维护自己的基础设施。 您构建它,然后操作它。

管道在配置管理中的位置在哪里?

软件管道(或“价值流”,我们可以使用 Plutora 等工具设计)是我们通常将代码从提交转移到生产的自动化阶段。 管道通常包括 linting 代码、单元测试代码、集成测试代码和工件创建等阶段。

因此,软件管道是一种配置管理。 当我们使用 Docker 等工具构建软件时,我们将构建指令编码到 Dockerfile 中。 这使我们能够更好地理解工件的依赖关系。

基础架构即代码的配置管理是真实的吗?

基础设施即代码(或 IaC)是确保所有基础设施供应都通过代码完成的做法。 IaC 的目标是保留一份文件记录,记录哪些服务存在、它们位于何处以及它们在什么条件下可用。 配置管理可能会决定使用 IaC 的组件来全面掌握组织拥有的所有技术资产。

您有持续集成/交付配置管理吗?

保证软件始终处于可发布形式的过程称为持续交付。 这可以通过广泛的自动化和测试来实现。 持续集成是通常将不同的软件工件集中在一个位置以确保代码成功集成的过程。 持续集成工具通常是执行自动化测试套件的服务器,通过提供对设置和配置特定软件资产所需过程的可见性,作为一种配置管理工作。

这应该可以回答您剩下的一些关于配置管理如何与您可能正在使用或熟悉的方法或想法保持一致的问题。 然而,如果不讨论工具,任何关于配置管理的讨论都是不充分的。 因此,让我们看一下可用于实现配置管理的各种工具。

配置管理工具

#1。 吉特

Git 是用于跟踪代码更改的行业领先的版本控制解决方案。 将配置管理数据与代码包含在 Git 存储库中可提供整个项目的综合版本控制视图。 Git 是高级配置管理的基本工具。 以下备选配置管理工具列表旨在保存在 Git 存储库中并使用 Git 版本控制跟踪。

#2。 码头工人

容器化与配置锁定一样,是 Docker 提供的一种高级配置管理形式。 Docker 基于称为 Dockerfiles 的配置文件,其中包括一系列命令,这些命令经过评估可重建操作系统状态的预期快照。 Docker 从这些 Dockerfile 生成容器,这些 Dockerfile 是预设应用程序的快照。 Dockerfiles 提交给 Git 存储库以进行版本控制,并且在将它们部署到基础设施之前需要额外的配置管理。

#3。 地形

HasiCorp 的 Terraform 是一个开源配置管理平台。 Terraform 使用 IaC 来配置和管理集群、云基础设施和服务。 Terraform 支持 AWS、Microsoft Azure 和其他云平台。

每个云平台都有自己的基本基础设施组件(如服务器、数据库服务器和队列)表示和接口。 Terraform 为云平台创建了配置工具的抽象层。 配置工具允许团队生成可重现其基础设施描述的文件。

#4。 Chef、Puppet、Ansible、Salt Stack

IT 自动化框架包括 Ansible、Salt Stack、Chef 和 Puppet。 这些框架自动执行了几个典型的系统管理员流程。 每个框架都使用一组配置数据文件,通常是 YAML 或 XML,这些文件由可执行文件进行分析。

配置数据文件概述了配置系统的步骤。 然后可执行文件执行操作。 可执行文件的语言因平台而异; Ansible 和 Salt Stack 是基于 Python 的,而 Chef 是基于 Ruby 的。 这种方法类似于运行临时 shell 脚本,但它通过各个平台的生态系统提供了更加结构化和精致的体验。

这些工具将提供实现 CI/CD 所需的自动化。

如何开始配置管理?

当然,您不能瞬间从“零”移动到“所需状态”。 事实上,在选择配置管理系统之前,您应该首先确定为什么需要一个。 以下是配置管理入门的方法:

  • 首先将手动清单和文档编译成所有(或大多数)系统上存在的一组通用配置选项。 最初将您的配置管理工作集中在最流行的模式上可以帮助您节省最多的人力并为您的公司带来快速的自动化优势。
  • 检查清单中是否包含监控、防病毒和其他常用软件。
  • 要开发可重用的基础架构即代码,请根据需要更改的内容对系统进行分类,使其特定于特定应用程序、地理位置或其他类别。
  • 选择配置管理系统。

结论

这里的所有都是它的! 希望这能澄清您对配置管理的理解。 这一切都是为了跟踪您的软件和基础设施的当前状态。

有许多实现配置管理的方法,以及许多工具和过程。 因此,当谈到战略时,请花时间评估选择并确定您希望配置管理程序如何运作。
然而,最终这一切都是值得的。 如果您的配置管理正确,您的团队将更安全、更高效,并且能够更快地进行更改!

祝你好运,从现在开始,审计、跟踪和编写一切代码!

参考资料

发表评论

您的电邮地址不会被公开。 必填带 *

你也许也喜欢