持续集成和持续交付/部署 (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 Linux 和 NVIDIA Air 等平台,网络工程师可以为其运营带来相同的敏捷性、可靠性和效率。
通过将 CI/CD 最佳实践与强大的仿真工具相结合,无论是在虚拟实验室还是生产数据中心,我们都能提供高度可扩展、无差错且快速的网络部署。
了解更多信息
- NVIDIA Air 简介
- 使用 NVIDIA Air 服务将仿真与现实世界联系起来
- 在 NVIDIA Air 中,外部文件上传可为可扩展的自定义网络拓扑带来优势
- 使用 Ansible 和 Git 在 NVIDIA Air 中实现网络设计的自动化
- NVIDIA Air 是一款基于云的软件,可帮助企业在云端和边缘部署 AI。文档资料
- NVIDIA Cumulus Linux 数据表
- NVIDIA Cumulus Linux 文档