云基础设施CLI工具

一个开源的AWS风格命令行工具包,用于管理E2E Networks云基础设施,包括节点、卷、VPC、DNS等,支持终端、代码和AI助手操作。

  • by arushk1
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 arushk1/e2e-cli

使用说明

E2E云命令行界面

一个开源的、AWS风格的命令行工具包,用于 E2E网络 云基础设施。从终端、代码或AI助手管理您的节点、卷、VPC、DNS等。

$ e2e node list

 id      name            status   plan     public_ip_address
 100001  web-server      Running  C3.8GB   203.0.113.10
 100002  api-backend     Running  C3.16GB  203.0.113.11
 100003  db-primary      Running  C3.32GB  203.0.113.12
 100004  staging         Stopped  C3.8GB   203.0.113.13

包含内容

这是一个包含四个包的TypeScript单仓库:

软件包 功能 安装
@e2e-cloud/sdk TypeScript SDK——对E2E网络API的编程访问 npm install @e2e-cloud/sdk
@e2e-cloud/cli AWS风格的CLI工具 npm install -g @e2e-cloud/cli
@e2e-cloud/mcp-server MCP服务器——让AI助手(Claude等)管理您的基础设施 npx @e2e-cloud/mcp-server
@e2e-cloud/skill Claude代码技能与指导工作流程 复制 SKILL.md 到 ~/.claude/skills/

所有四个包共享一个SDK核心,因此添加新服务意味着只需编写一次。

快速开始

1.安装

npm install -g @e2e-cloud/cli

2.获取凭据

在创建API令牌 E2E MyAccount>API和IAM你会得到一个 API密钥 和a 授权令牌.

3.配置

e2e configure

这会将您的凭据保存到 ~/.e2e/config.jsonCLI和MCP服务器都从该文件读取。

或者,手动创建文件:

{
  "apiKey": "your-api-key",
  "authToken": "your-auth-token",
  "defaultRegion": "Delhi"
}

4.使用

e2e node list                   # Table output (default)
e2e node list --output json     # JSON output (pipe to jq, scripts, etc.)
e2e node get --id 12345         # Detailed info for a single node
e2e vpc list                    # List your VPCs
e2e security-group list         # List security groups

CLI参考

服务

服务 命令
e2e node list, get, create, delete, action (开机、关机、重启、重新安装、锁定、解锁、重命名)
e2e volume list, get, create, delete, attach, detach
e2e image list, list-categories, list-saved, delete
e2e vpc list, get, create, delete
e2e security-group list, get, create, update, delete, mark-default
e2e firewall list, get, create, delete
e2e dns list, get, create, delete, verify-ns, verify-validity, verify-ttl
e2e reserve-ip list, get, create, delete, action, convert-floating, attach-floating, detach-floating

全球旗帜

--output <format>   Output format: table (default) or json
--project-id <id>   Override project ID
--api-key <key>     Override API key
--debug             Show HTTP request/response details
--no-color          Disable colored output

例子

# Create a compute node
e2e node create \
  --name my-server \
  --plan C-2 \
  --image Ubuntu-22.04-Starter \
  --ssh-keys "ssh-ed25519 AAAA... user@example.com" \
  --security-group-id 12345 \
  --region ncr

# Create a volume and attach it
e2e volume create --name data-vol --size 500 --iops 10000
e2e volume attach --id 100 --vm-id 12345

# Manage DNS
e2e dns list
e2e dns create --domain-name example.com --ip-address 1.2.3.4

# Power off a node
e2e node action --id 12345 --type power_off

# Pipe JSON to other tools
e2e node list --output json | jq '.[].name'

SDK使用

直接在TypeScript/JavaScript应用程序中使用SDK:

import { E2EClient } from "@e2e-cloud/sdk";

const client = new E2EClient({
  apiKey: "your-api-key",
  authToken: "your-auth-token",
  location: "Delhi",
});

// List all nodes
const { data: nodes } = await client.nodes.list();
console.log(nodes);

// Create a node
const { data: createResult } = await client.nodes.create({
  name: "my-node",
  region: "ncr",
  plan: "C-2",
  image: "Ubuntu-22.04-Starter",
  ssh_keys: ["ssh-ed25519 AAAA... user@example.com"],
  security_group_id: 12345,
});
const nodeId = createResult.node_create_response[0]?.id;

// Power off
if (nodeId) await client.nodes.action(nodeId, { type: "power_off" });

// Volumes
const { data: volumes } = await client.volumes.list();
await client.volumes.create({ name: "data", size: 500, iops: 10000 });

// VPCs
await client.vpcs.create({
  vpc_name: "my-vpc",
  ipv4: "10.10.0.0/23",
  is_e2e_vpc: false,
});

// DNS
const { data: domains } = await client.dns.list();
await client.dns.create({
  domain_name: "example.com",
  ip_addr: "1.2.3.4",
});

MCP服务器(基于人工智能的基础设施)

MCP服务器允许像Claude这样的人工智能助手通过自然语言管理您的E2E网络基础设施。

设置

添加到您的克劳德代码设置(~/.claude/settings.json):

{
  "mcpServers": {
    "e2e-cloud": {
      "command": "npx",
      "args": ["@e2e-cloud/mcp-server"]
    }
  }
}

MCP服务器从以下位置读取凭据 ~/.e2e/config.json (与CLI相同的文件)。

你能做什么

配置后,您可以向Claude询问以下问题:

  • “列出我所有正在运行的节点”
  • “创建一个具有8GB RAM的新Ubuntu节点”
  • “将500GB卷附加到我的后端服务器”
  • “为我的域创建DNS转发”
  • “关闭测试服务器电源”

可用工具

服务器公开了30多个工具: e2e_node_list, e2e_node_create, e2e_volume_attach, e2e_dns_create以及更多。看 MCP设置 查看完整列表。

项目结构

e2e-cli/
├── packages/
│   ├── sdk/           # Shared TypeScript SDK (API client, types, services)
│   ├── cli/           # AWS-style CLI (commander.js)
│   ├── mcp-server/    # MCP server (stdio transport)
│   └── skill/         # Claude Code skill (SKILL.md)
├── docs/              # Documentation
├── package.json       # npm workspaces root
└── tsconfig.base.json # Shared TypeScript config

建筑

  CLI (commander.js)          MCP Server (@modelcontextprotocol/sdk)
         \                          /
          \                        /
           +--- SDK (axios) ------+
                    |
            E2E Networks API
   https://api.e2enetworks.com/myaccount/api/v1

CLI和MCP服务器都是共享SDK的精简包装器。SDK处理身份验证(API密钥+承载令牌)、HTTP请求、错误规范化和响应类型。

发展

先决条件

  • Node.js>=18
  • npm>=9

设置

git clone https://github.com/arushk1/e2e-cli.git
cd e2e-cli
npm install

构建

npm run build        # Build all packages

测试

npm test             # Run all tests (47 tests across 3 packages)

添加新服务

每项服务都遵循相同的模式。要添加对新的E2E Networks API端点的支持,请执行以下操作:

  1. 在中添加类型 packages/sdk/src/types/<service>.ts
  2. 在中添加服务类 packages/sdk/src/services/<service>.ts
  3. 在上注册 E2EClient 在 packages/sdk/src/client.ts
  4. 在中添加CLI命令 packages/cli/src/commands/<service>.ts
  5. 在中添加MCP工具 packages/mcp-server/src/tools/<service>.ts
  6. 在中添加测试 packages/sdk/tests/services/<service>.test.ts

看 添加新服务 有关代码模板的详细指南。

路线图

  • 第1阶段(当前): 节点、卷、映像、VPC、安全组、防火墙、DNS、保留IP
  • 第二阶段: 对象存储、可扩展文件系统、DBaaS(MySQL、PostgreSQL、Valkey、Kafka)、容器注册表
  • 第三阶段: CDN、计费、自动扩展、Kubernetes、CDP备份
  • 第四阶段: TIR API(GPU实例、模型端点、训练集群、RAG、GenAI)

API 参考

贡献

欢迎投稿!无论是添加新服务、修复错误、改进文档还是建议功能。

  1. 分叉回购
  2. 创建要素分支(git checkout -b feat/object-storage)
  3. 进行更改
  4. 运行测试(npm test)
  5. 提交PR

许可证

麻省理工学院