🤖 一个基于MCP的AI驱动网络自动化助手,可以安全地调用pyATS工具对Containerlab环境中设置的Arista cEOS设备进行操作。通过自然对话运行show命令、推送配置、验证状态,并可选地使用Terraform在EC2主机上部署实验室环境。
╔════════════════════════════════════╗
║ AI网络助手流程 ║
╚════════════════════════════════════╝
┌──────────┐
│ 用户 │
└─────┬────┘
│ 聊天查询
▼
┌──────────────────────┐
│ agent.py (Gemini) │ ◄─ Gemini API
└──────────┬───────────┘
│ MCP标准输入输出
│ (列出设备、运行show、配置)
▼
┌──────────────────────┐
│ server.py (FastMCP) │ ◄─ pyATS
└──────────┬───────────┘
│ SSH (测试床.yaml)
▼
┌────────────────────────┐
│ Containerlab拓扑 │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │ceos│──│ceos│─│ceos│ │
│ │ 1 │ │ 2 │ │ 3 │ │
│ └────┘ └────┘ └────┘ │
└────────────────────────┘
可选:Terraform → EC2 → Containerlab → cEOS
src/agent.py使用Gemini并在需要时调用MCP工具。模型从未有原始设备访问权限;它仅通过MCP工具操作。src/server.py加载pyATS测试床(PYATS_TESTBED_PATH),并使用健壮的发送/期望流在设备上执行命令。containerlab/下提供了一个Arista cEOS实验室样本,包括topology.clab.yaml和一个现成的pyATS测试床。terraform/可以启动一个EC2主机来运行Containerlab,如果你希望在一个云实验室环境中工作。关键特性:
使用venv避免依赖冲突。
cd AI-Network-Assistant
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
在项目根目录创建一个.env文件(它已经在.gitignore中以防止泄露秘密信息)。
cat > .env << 'EOF'
GEMINI_API_KEY=在这里填写你的gemini api key
PYATS_TESTBED_PATH=./containerlab/testbed_containerlab.yaml
EOF
注意事项:
GEMINI_API_KEY由代理所需。PYATS_TESTBED_PATH必须指向您的pyATS测试床YAML。现成的文件位于containerlab/testbed_containerlab.yaml。此仓库包含一个简单的3节点Arista cEOS拓扑。
使用辅助脚本安装Containerlab及其依赖项:
./clab.sh
部署实验室:
sudo containerlab deploy -t containerlab/topology.clab.yaml
您将拥有:
ceos1,ceos2,ceos3),带有启动配置在containerlab/backup_configs/下containerlab/topology.clab.yaml定义的链接containerlab/testbed_containerlab.yaml下的现成pyATS测试床,具有SSH访问和默认凭证(演示中的admin/admin)完成时销毁:
sudo containerlab destroy -t containerlab/topology.clab.yaml
如果您想在AWS而不是本地运行实验室,您可以配置一个实例,然后在那里安装Containerlab。如果您不使用云,可以跳过这一节。
安装AWS CLI和Terraform:
./terraform.sh
配置AWS凭证(一次):
aws configure
根据需要查看/调整terraform/terraform.tfvars,然后进行配置:
cd terraform
terraform init
terraform plan
terraform apply -auto-approve
有用的输出将包括实例详情和SSH命令。配置后,SSH到实例,克隆此仓库,重复步骤1-3,并在云VM中部署Containerlab拓扑。
完成时销毁:
terraform destroy -auto-approve
激活venv并配置.env后:
python3 src/agent.py
会发生什么:
src/server.py)。PYATS_TESTBED_PATH加载pyATS测试床,并公开工具。可以询问的一些示例:
服务器(src/server.py)
fastmcp通过MCP(标准输入输出传输)公开工具。PYATS_TESTBED_PATH加载pyATS测试床,并按需连接到设备。代理(src/agent.py)
.env并初始化Gemini(google-generativeai)。Containerlab和pyATS
containerlab/topology.clab.yaml定义了cEOS节点和链接。containerlab/backup_configs/下。containerlab/testbed_containerlab.yaml下的pyATS测试床指向实验室设备IP地址和SSH凭证。Terraform(可选)
terraform/定义了一个EC2实例、安全组和实例状态控制。terraform.sh在运行terraform命令之前在机器上安装AWS CLI和Terraform。.venv已激活且pip install -r requirements.txt成功。.env存在且具有有效的GEMINI_API_KEY和PYATS_TESTBED_PATH。欢迎贡献!请遵循以下步骤:
git checkout -b feature-branch-name
git commit -m "添加新功能"
git push origin feature-branch-name
Apache 2.0