数据中心/云端

使用 CI/CD 自动化网络配置和部署

持续集成持续交付/部署 (CI/CD) 是一套现代软件开发实践,用于更可靠、更频繁地交付代码更改。虽然 CI/CD 在软件领域得到广泛采用,但它对网络工程师来说变得越来越重要,特别是在网络变得自动化和软件驱动的情况下。

在这篇文章中,我将简要介绍 CI/CD,并解释网络工程师如何使用这些实践进行网络自动化,特别是在使用 Cumulus Linux 和使用 NVIDIA Air 数字孪生平台进行仿真时。

什么是 CI/CD 流程?

CI/CD 管线可自动执行软件交付流程。它确保以可重复且可扩展的方式测试、验证和部署代码。该工作流集成了:

  • 持续集成 (CI) :代码会频繁合并和测试。
  • 持续交付/部署 (CD) :代码在测试、预生产和生产环境中自动打包和部署。

对于网络工程师而言,这意味着部署网络配置和自动化脚本的过程变得更加高效、可靠。

为什么需要网络 CI/CD?

借助 Cumulus Linux 等网络操作系统(由于其 Linux 的根源,该操作系统原生支持自动化和脚本编写),网络自动化可以采用软件工程中使用的相同原则。

为什么这一点很重要?

  • 速度:更快地迭代和部署更改。
  • 质量:自动检查和验证可减少错误。
  • 可靠性:一致的流程意味着生产过程中的意外更少。
  • 可扩展性:轻松支持不断增长的基础设施和用例。

CI/CD 应用于网络自动化

让我们来看看网络工程师如何在实践中应用 CI/CD 概念。

代码提交:将配置视为代码

如果我们将网络配置视为代码,则自动化脚本或拓扑配置等更改将通过版本控制(例如 Git)进行。这使得更改可以像任何软件开发工作流一样可追踪、可审查和可测试。

通过将配置更改视为代码更改,网络团队可直接集成到 DevOps 工作流中,从而提高可见性治理

持续集成 (CI)

CI 会自动验证代码更改是否有效且可构建。

对于网络用例:

  • 工件可以是自动化脚本、容器镜像或渲染的配置文件。
  • 通过检查语法和格式,确保 YAML、JSON 或 Jinja2 模板的语法正确且一致。
  • 无需手动创建静态配置文件,而是使用 Jinja2 模板根据拓扑、节点角色或功能等变量动态生成配置。这可以最大限度地减少人为错误并提高灵活性。

持续交付 (CD)

CD 可自动将经过验证的配置部署到测试和生产环境中。

例如:

  • 渲染的配置通过自动化工具脚本进行部署。
  • 应在工作流中内置日志记录和调试挂钩,以便尽早发现错误。
  • 健康检查和验证可以确认配置已在所有网络节点上成功部署。

虽然我们不会在本篇文章中深入介绍构建工作流的全部细节(例如使用 GitLab),但重要的是要强调,GitLab CI/CD 设置中的关键配置文件是 .gitlab-ci.yml 文件。

此 YAML 格式文件定义了工作流的运行方式,指定了阶段、作业和执行逻辑。它告诉 GitLab 如何编排配置渲染、测试、验证和部署等任务。

由于该文件是整个自动化工作流的蓝图,因此了解如何正确构建该文件并正确定义任务参数至关重要。在本系列的后续文章中,我们将详细介绍如何有效编写和管理用于网络自动化的 .gitlab-ci.yml 文件。

自动化测试和验证

CI/CD 流程可以包括以下自动验证

  • 在设备上运行 show 命令
  • 解析输出以检查成功标准(例如,接口已启动,BGP 邻居已建立)。
  • 在部署失败到达生产环境之前进行标记。

这可以提供有关网络运行状况的持续反馈,并防止错误配置的传播。

使用 NVIDIA Air 进行 CI/CD 开发

NVIDIA Air 数字孪生平台是现代数据中心的先进仿真环境。它使用 Cumulus Linux、SONIC 和模拟主机操作系统的可能性来模拟复杂的网络。

用户可以使用以下内容构建拓扑:

  • 图形工具(拖放)。
  • JSON/DOT 文件(用于程序化创建)。

虽然手动设置适用于一般用例且非常直观,但 CI/CD 管线可提供更专业的流程,以实现快速迭代、验证和共享。

使用 API 自动化 NVIDIA AIR

  • 用于低级自动化的 REST API
  • Python SDK,用于封装 API 并提供易于自动化的抽象层

使用这两种方法,管线可以:

  • 启动拓扑。
  • 注入配置。
  • 触发验证脚本。
  • 销毁和重建实验室以实现可重复性。

CI/CD 和 NVIDIA Air 的实际用例

网络工程师可以使用 NVIDIA Air 的 CI/CD 来:

  • 配置集成:将配置生成直接集成到自动化工作流中。
  • 研讨会和演示:为研讨会、培训或演示自动生成一致、可重复的实验。
  • 合作伙伴解决方案:创建可共享的模板,为客户或合作伙伴提供自定义拓扑。
  • 自动化测试:无需手动操作,即可快速验证不同拓扑结构的变化。

NVIDIA Air 上数据中心仿真环境的示例 CI/CD 流程图

以下是我们的开发团队使用 NVIDIA Air 的 CI/CD 管线的一个真实示例,模拟了一个数据中心用例:

  • 从源代码中提取相关资源库:有多个 git 资源库用于各种用途(AIR 自动化代码、网络配置渲染存储在单独的资源库中),此作业从资源库中提取所有源代码,包括拓扑文件和配置脚本、jinja2 模板。
  • 运行一些配置文件语法/格式检查:我们需要验证拓扑文件是否符合格式要求,以及是否可以被 Air API 解析。
  • 将拓扑创建为 AIR 仿真:我们从点或 json 文件创建 AIR 拓扑。
  • 配置拓扑参数:修改组织选择或仿真过期等拓扑参数。
  • 启动仿真并配置网络设备和服务器:我们使用 API 调用启动 AIR 仿真,并将渲染的配置文件复制到网络设备和服务器。
  • 使用各种 show 命令和 ping 测试验证拓扑:验证拓扑是否正确,以检查布线是否符合设计。
  • 保存所有内容并关闭仿真:保存仿真以备后用,并关闭仿真。

结论

CI/CD 流程是软件工程中的标准工具,现在已成为网络自动化的关键部分。借助 Cumulus LinuxNVIDIA Air 等平台,网络工程师可以为其运营带来相同的敏捷性可靠性效率

通过将 CI/CD 最佳实践与强大的仿真工具相结合,无论是在虚拟实验室还是生产数据中心,我们都能提供高度可扩展、无差错且快速的网络部署。

了解更多信息

 

标签