返回市场
代理智能工作坊

代理智能工作坊

作者:JNPRAutomate6 星标更新:2025-11-19

项目介绍

ws-a3-autocon4

通过MCP将网络工程师转变为自动化从业者

工作坊概述

欢迎来到在“网络自动化论坛AutoCon4”上的WS:A3

本实践工作坊将通过利用革命性的**模型上下文协议(MCP)**框架和AI辅助,改变您对网络操作的方法。您将使用运行JunOS的HPE Juniper Networks虚拟拓扑来开发智能自动化能力,以消除传统的UI驱动的操作。

工作坊详情

  • 活动:网络自动化论坛 - AutoCon4
  • 标题:通过MCP将网络工程师转变为自动化从业者
  • 主持人:Jose Miguel Izquierdo, Jessica Garrison, Nilesh Simaria
  • 组织:Juniper Networks(现为Hewlett Packard Enterprise - HPE)
  • 级别
    • 网络:中级
    • 系统/Linux:中级
    • 编程:中级

学习目标

到本工作坊结束时,您将能够:

  • 理解MCP基础:了解模型上下文协议的架构和功能
  • 实施AI辅助配置管理:部署并审核网络设备配置
  • 开发自动测试与验证:创建智能验证工作流
  • 执行AI驱动的根本原因分析:利用AI进行故障排除和诊断
  • 模拟网络弹性:测试故障场景和恢复程序

工作坊议程

🏗️ MCP基础

  • 架构和功能概述
  • 使用Claude Desktop设置MCP
  • 了解AI-网络自动化接口

⚙️ 通过AI辅助自动化进行配置管理

  • 智能设备发现和拓扑映射
  • 动态配置生成和部署
  • 使用Jinja2模板的自动化

🧪 自动测试和验证

  • 协议状态验证
  • 网络连通性测试
  • 性能验证工作流

🔍 AI驱动的根本原因分析(RCA)和故障排除

  • 配置归因分析
  • 核心转储调查
  • 智能故障诊断

💥 故障模拟场景

  • 网络弹性测试
  • 自动化恢复
  • 健康评估工作流

工作坊结构

本工作坊中的每个用例都遵循一致的结构,帮助您高效地导航和完成练习。

  • 每个用例目录包含一个带有详细说明、目标和逐步指导的README.md文件。
  • 工作区包括完成练习所需的所有必要配置文件、模板、报告示例和资源。
  • 每个用例都是独立的,可以按任意顺序执行。建议按照工作坊主持人的指示进行。
  • 您还会找到一个成就列表,以便在完成每个任务时跟踪进度。

这种标准化的框架确保您可以专注于学习概念,而不是寻找材料。

用例

这是本工作坊要做的用例列表:

这些8个用例位于/home/claude/workspace/的不同文件夹中。它们旨在帮助您了解代理AI如何协助您作为网络工程师的日常任务:

🔗 UC1 - LLDP(链路层发现协议)

  • 重点:网络发现与拓扑映射
  • 技能:设备配置、邻居关系、拓扑可视化
  • AI任务:自动LLDP配置、邻居分析、交互式拓扑图
  • 目标:在所有网络设备上部署和配置LLDP,然后根据从LLDP协议收集的数据配置接口描述,并生成一个交互式拓扑图,该图应与Container Lab定义的拓扑相匹配。

📝 UC2 - 接口描述

  • 重点:智能配置管理
  • 技能:上下文感知配置、自动生成文档
  • AI任务:动态接口描述生成、配置审核
  • 目标:基于发现的网络连接(匹配命名约定和实际物理链接)审核配置的接口描述,创建准确反映物理拓扑的自文档化网络基础设施。

🛡️ UC3 - OSPF及核心转储分析

  • 重点:网络健康评估与故障排除
  • 技能:协议分析、崩溃调查、健康监控
  • AI任务:OSPF状态验证、核心转储取证、根本原因分析
  • 目标:通过分析OSPF协议健康状况并进行核心转储文件的法医分析,确定模拟网络故障场景的根本原因。

🔀 UC4 - ISIS及配置归因

  • 重点:变更归属及配置取证
  • 技能:变更追踪、配置审核、归因分析
  • AI任务:系统化的配置变更归属、提交历史分析和时间线重建
  • 目标:通过创建类似于网络设备配置的git blame等价物,实现全面的配置变更追踪,将每个配置行归因于其作者和提交。

📋 UC5 - Jinja2模板

  • 重点:基于模板的自动化
  • 技能:动态配置生成、模板管理
  • AI任务:模板渲染、干运行和配置部署
  • 目标:设计并部署使用Jinja2模板的标准网络配置,实现整个拓扑中设备配置的一致性和可扩展性。

🌐 UC6 - L3VPN故障排除

  • 重点:L3VPN服务故障排除
  • 技能:复杂服务配置、多设备编排
  • AI任务:端到端VPN故障排除、服务验证、拓扑感知、服务部署。
  • 目标:编排跨多个PE路由器的完整L3VPN服务部署,包括自动路由目标分配、VRF配置以及端到端连通性验证。

🏗️ UC7 - Juniper Validated Design (JVD)

  • 重点:架构最佳实践
  • 技能:设计模式实现、标准合规
  • AI任务:设计验证、架构分析、合规检查
  • 目标:将网络架构与Juniper Validated Design原则进行验证,并自动实施推荐的配置模式,以实现最佳性能和可靠性。

📊 UC8 - 网络健康评估

  • 重点:综合网络监控及文档驱动的操作
  • 技能:多层健康检查、性能分析、文档驱动的自动化、健康策略定义
  • AI任务:整体网络评估、预测分析、警报、针对自定义健康策略的合规验证
  • 目标:创建自定义的NETWORK.HEALTH.md方法论文档,定义您的网络健康标准,然后让AI代理根据您记录的标准验证和维护网络合规性。

技术栈

网络基础设施

  • HPE Juniper Networks cRPD:容器化路由协议守护进程
  • JunOS:行业领先的网络操作系统(限于cRDP)
  • JVDs:Juniper Validated Designs
  • Container Lab:网络拓扑编排
  • Docker:容器化平台

自动化及AI

  • 模型上下文协议(MCP):革命性的AI-网络接口
  • Claude Desktop应用程序:具有网络自动化能力的AI助手
  • LLM模型:Sonnet 4.5
  • Jinja2:高级模板引擎
  • Python:自动化脚本

协议和技术

  • LLDP:网络发现和拓扑映射
  • OSPF/ISIS:内部网关协议
  • BGP L3VPN:服务提供商技术
  • SSH/NETCONF:网络管理协议

先决条件

网络知识

  • 对TCP/IP基础知识的理解
  • 对路由协议(OSPF、ISIS、BGP)的熟悉
  • 对网络拓扑和设计的基本了解

系统/Linux

  • 命令行导航和文件操作
  • DockerContainerLab的基本理解
  • 舒适地使用SSH和远程系统访问

编程

  • 基本的Python脚本概念
  • 对Jinja2模板*.j2和变量{{ }}的理解
  • 对JSON/YAML数据格式*.yaml*.yml的熟悉

工作坊环境

实验室基础设施

  • 预配置的Linux VM,带有DockerContainerLabPython3uv
  • 每个用例有多个JunOS cRPD实例
  • 持久的工作空间位于/home/claude/workspace/
  • 集成的AI助手,具有MCP连接性

访问要求

  • 在您的笔记本电脑上安装Claude Desktop应用程序
  • Claude PRO计划($20(1个月))。参见Claude 定价
  • 对工作坊环境的SSH访问(.ssh/config)
  • Visual Studio Code(推荐),带有以下扩展(最后四个您需要在打开会话后在远程VM中安装):
    • 远程SSH扩展
    • ContainerLab扩展
    • Markdown Preview Enhanced(推荐)
    • Markdown All in One(推荐)
    • Auto-Open Markdown Preview(推荐)

这里您可以找到所有扩展及其图标的截图,以帮助您安装它们:

VSCode扩展

  • 用于拓扑可视化的Web浏览器
  • 终端/命令行访问(SSH)(推荐字符编码系统:UTF-8

开始

您应该已经收到一封包含工作坊详细信息的电子邮件(如果没有,请询问工作坊支持团队)。它应该包括与工作坊相关的以下详细信息:

  • 仓库链接
  • VM详细信息
    • ${PROVIDED_VM_IP}
    • ${PROVIDED_VM_PORT}(如果未提供,默认为SSH端口(例如22))
  • 私钥(id_rsa_claude

您需要保留所有这些信息,不要与任何人分享(仅在需要时与工作坊支持团队分享)。

您可能已经完成了其中的一些步骤。如果是这样,请随意继续并跳过您已经完成的步骤。

配置您的SSH配置文件

在开始工作坊之前,您必须配置您的SSH客户端,以便无缝访问所有工作坊组件:

1. 工作坊VM SSH访问

要访问工作坊VM,您需要使用通过电子邮件提供的SSH私钥id_rsa_claude)进行SSH身份验证,或者您也可以在本仓库的utils/文件夹中找到它的副本(例如utils/id_rsa_claude)。

  1. 将私钥文件保存到本地机器的安全位置(例如~/.ssh/id_rsa_claude)。

  2. 确保密钥具有正确的权限600,以防止SSH由于过于宽松的访问权限而拒绝它。

    chmod 600 ~/.ssh/id_rsa_claude
    
  3. 使用以下命令测试您对VM的连接:

    ssh -i ~/.ssh/id_rsa_claude claude@${PROVIDED_VM_IP} -p ${PROVIDED_VM_PORT}
    

    或者记住,如果未提供${PROVIDED_VM_PORT},则无需添加默认端口22(跳过-p选项)

    ssh -i ~/.ssh/id_rsa_claude claude@${PROVIDED_VM_IP}
    

    ${PROVIDED_VM_IP}替换为VM的IP地址,将${PROVIDED_VM_PORT}替换为邮件中提供的VM端口。公共SSH RSA密钥(~/.ssh/id_rsa_claude.pub)已添加到工作坊VM和cRPD设备的用户claude~/.ssh/authorized_keys)中,因此您可以无密码地SSH进入工作坊VM和cRPD设备。

  4. 为了方便起见,在您的~/.ssh/config文件中添加以下代码。这将允许您只需键入ssh naf-ws-vm即可连接到工作坊VM。无需密码!请务必安全保管您的私钥,切勿与他人分享或将其提交到版本控制系统中。

向您的~/.ssh/config文件添加以下配置:

# 工作坊VM配置
Host naf-ws-vm
    HostName ${PROVIDED_VM_IP}
    User claude
    Port ${PROVIDED_VM_PORT}
    IdentityFile ${ABSOLUTE_PATH_TO_SSH_RSA_CLAUDE} # 例如 /Users/my_user/.ssh/id_rsa_claude
    StrictHostKeyChecking no
    IdentitiesOnly yes

2. 容器实验室cRPD路由器访问

配置通过VM访问容器化路由器(请注意ProxyCommand行中包含的跳转主机VM名为配置前的naf-ws-vm):

⚠️ 确保您没有其他Host条目定义了相同的名称(例如naf-ws-vmpe1pe2pe3pe4pe5pe6pce1和/或ce2),否则在连接时会出现冲突。如果有,请添加前缀(例如naf),并在连接时记得使用它。

# cRPD设备(通过工作坊VM跳转主机(例如naf-ws-vm))
Host pe1
    HostName 172.20.20.11
    User claude
    IdentityFile ${ABSOLUTE_PATH_TO_SSH_RSA_CLAUDE} # 例如 /Users/my_user/.ssh/id_rsa_claude
    ProxyCommand ssh -l claude naf-ws-vm nc %h 22 2>/dev/null
    StrictHostKeyChecking no

Host pe2
    HostName  172.20.20.12
    User claude
    IdentityFile ${ABSOLUTE_PATH_TO_SSH_RSA_CLAUDE} # 例如 /Users/my_user/.ssh/id_rsa_claude
    ProxyCommand ssh -l claude naf-ws-vm nc %h 22 2>/dev/null
    StrictHostKeyChecking no

Host pe3 p
    HostName 172.20.20.13
    User claude
    IdentityFile ${ABSOLUTE_PATH_TO_SSH_RSA_CLAUDE} # 例如 /Users/my_user/.ssh/id_rsa_claude
    ProxyCommand ssh -l claude naf-ws-vm nc %h 22 2>/dev/null
    StrictHostKeyChecking no

Host pe4 ce1
    HostName 172.20.20.14
    User claude
    IdentityFile ${ABSOLUTE_PATH_TO_SSH_RSA_CLAUDE} # 例如 /Users/my_user/.ssh/id_rsa_claude
    ProxyCommand ssh -l claude naf-ws-vm nc %h 22 2>/dev/null
    StrictHostKeyChecking no

Host pe5 ce2
    HostName 172.20.20.15
    User claude
    IdentityFile ${ABSOLUTE_PATH_TO_SSH_RSA_CLAUDE} # 例如 /Users/my_user/.ssh/id_rsa_claude
    ProxyCommand ssh -l claude naf-ws-vm nc %h 22 2>/dev/null
    StrictHostKeyChecking no

Host pe6
    HostName 172.20.20.16
    User claude
    IdentityFile ${ABSOLUTE_PATH_TO_SSH_RSA_CLAUDE} # 例如 /Users/my_user/.ssh/id_rsa_claude
    ProxyCommand ssh -l claude naf-ws-vm nc %h 22 2>/dev/null
    StrictHostKeyChecking no
  1. 使用以下命令测试您对VM的连接(它不包含隐含在命令中的用户或SSH密钥):

    ssh naf-ws-vm
    

如果无法连接,可能是您被分配了一个JCL(Juniper Cloud Labs)沙箱,且您的公网IP尚未被允许(由支持团队!)。请他们允许,或者如果您收到了来自JCL的URL电子邮件,请按照以下步骤操作。否则,您可以跳过下一步:

3. 添加您的公网IP到JCL

找出您从JCL看到的公网IP。访问此网站并复制IP:

https://test-01.cloudlabs.juniper.net/

您应该看到如下内容:

JCL您的公网IP

复制此IP并将其添加到您的JCL沙箱允许的网络前缀中。为此,请前往COMMANDS,在右侧点击Add Allow Network Prefixes

JCL允许网络前缀

添加它,然后点击Run

JCL添加允许网络前缀

您应该看到一个窗口,显示正在运行一个脚本来将您的前缀添加到JCL,以便您可以远程访问您的沙箱。

JCL控制台输出

4. 测试SSH连接

验证您的SSH配置:

# 测试VM访问
ssh naf-ws-vm

# 测试路由器访问(在任何用例拓扑部署之后!否则,它将不起作用)
ssh pe1
ssh pe2
ssh pe3
ssh pe4
ssh pe5
ssh pe6

连接到您的VM