VergeOS TypeScript SDK (tsvergeos)
tsvergeos là một TypeScript SDK để quản lý VergeOS thông qua REST API, cung cấp giao diện có kiểu, không phụ thuộc, có thể tree-shake để tự động hóa VM, mạng, lưu trữ, tenant và đa site.
Tổng quan
tsvergeos là một SDK TypeScript để quản lý hạ tầng VergeOS thông qua REST API. Nó cung cấp một giao diện không phụ thuộc, có thể tree-shake, được gõ kiểu đầy đủ để tự động hóa vòng đời VM, mạng, lưu trữ, vận hành đa thuê bao và quản lý đa site, khiến nó lý tưởng cho các script tự động hóa, phát triển công cụ và tích hợp.
Tính năng chính
Không phụ thuộc: Không có gì để kiểm tra, không có gì để hỏng
Có thể Tree-Shake: Chỉ import các dịch vụ bạn dùng; các dịch vụ không dùng sẽ bị loại bỏ như mã chết
Phủ kiểu đầy đủ: Mọi tài nguyên, tham số và phản hồi đều được gõ kiểu với tài liệu TSDoc
93 dịch vụ: Phủ đầy đủ mọi điểm cuối của API VergeOS
Tích hợp đa site sẵn có: Truy vấn và quản lý nhiều triển khai VergeOS từ một
SiteManagerĐa nền tảng: Hoạt động trong Node.js 20+, Deno, Bun và các trình duyệt hiện đại
Lọc: Hỗ trợ bộ lọc OData với cả một
Filterbuilder dạng fluent và mộtbuildFilterviết tắt hàm
Yêu cầu
Node.js 20+ (cũng hỗ trợ Deno và Bun)
VergeOS 6.x (API v4)
Cài đặt
Từ npm (Khuyến nghị)
Dùng pnpm / yarn / bun
Xác thực
SDK hỗ trợ nhiều phương thức xác thực:
API Key (Khuyến nghị)
Đặt verifySsl: false chỉ cho các môi trường có chứng chỉ tự ký. Với môi trường sản xuất có chứng chỉ hợp lệ, hãy bỏ qua tham số này hoặc đặt nó thành true.
Tên đăng nhập / Mật khẩu
Biến môi trường
Khuyến nghị cho môi trường sản xuất
Sử dụng biến môi trường giúp giữ thông tin xác thực ra khỏi mã nguồn của bạn và dễ dàng dùng các thông tin xác thực khác nhau giữa các môi trường.
Đăng ký dịch vụ
SDK sử dụng các import có thể tree-shake — các dịch vụ được đăng ký qua import tạo hiệu ứng phụ, nên các dịch vụ không dùng sẽ bị loại khỏi bundle của bạn.
Ba mức import
Dịch vụ chưa đăng ký
Import mặc định không bao gồm mọi dịch vụ. Nếu bạn truy cập một dịch vụ chưa được đăng ký (ví dụ: client.alarms mà không import nó), bạn sẽ nhận được undefined. Với dashboard, công cụ quản trị hoặc script backend nơi kích thước bundle không quan trọng, hãy dùng import '@vergeio/tsvergeos/full' để đăng ký tất cả.
Chỉ import kiểu
Import kiểu không ảnh hưởng đến bundle dù bất kỳ dịch vụ nào được đăng ký:
Tài nguyên có sẵn
SDK cung cấp quyền truy cập vào 93 dịch vụ bao phủ toàn bộ API VergeOS:
Điện toán
VM, ổ đĩa, thiết bị, NIC, snapshot máy, thống kê
Mạng
Mạng, quy tắc, bí danh, địa chỉ, máy chủ, vùng/bản ghi/giao diện DNS
VPN
Giao diện và peer WireGuard, kết nối và giai đoạn IPSec
Lưu trữ
Volume, snapshot volume, chia sẻ CIFS/NFS, đồng bộ, trình duyệt, tầng lưu trữ
NAS
Dịch vụ NAS, người dùng, tệp
Tenant
Tenant, node, lưu trữ, snapshot, Layer 2
Công thức
Recipe VM và tenant, instance, danh mục, kho lưu trữ
Ảnh chụp nhanh
Hồ sơ snapshot, chu kỳ, snapshot đám mây
Site
API sites service — các đồng bộ vào/ra, các chu kỳ hồ sơ đồng bộ (khác với SiteManager)
Hệ thống
Hệ thống, cụm, node, cài đặt, nhật ký, tác vụ
Giám sát
Cảnh báo, loại cảnh báo, webhook, URL webhook
Xác thực
Người dùng, nhóm, thành viên, quyền, khóa API
Thẻ
Thẻ, danh mục, thành viên
Cập nhật
Cài đặt cập nhật, nguồn, gói, nhánh
Khác
Chứng chỉ, cloud-init, nhóm tài nguyên
Ví dụ sử dụng
Quản lý máy ảo
Danh sách powerstate trường trên tài nguyên VM thường bị API bỏ qua. Để có trạng thái nguồn trực tiếp mang tính thẩm quyền, hãy truy vấn dịch vụ trạng thái máy:
Truy cập Console
getConsoleInfo() trả về thông tin kết nối để mở console WebSocket trực tiếp tới một VM. Hỗ trợ ba phương thức xác thực — chọn theo nơi console được hiển thị:
API WebSocket không hỗ trợ header tùy chỉnh — hãy dùng tên đăng nhập/mật khẩu hoặc một token sẵn có trong trình duyệt. Để đi tắt không cần gọi API tới console giao diện web, hãy dùng client.vms.getConsoleURL(42).
Lọc tài nguyên
SDK hỗ trợ nhiều cách tiếp cận lọc:
Quản lý đa site
Quản lý nhiều triển khai VergeOS từ một điểm truy cập duy nhất:
Truy vấn đa site
Danh sách SiteManager phân tán các truy vấn đọc song song trên tất cả các site đã đăng ký và trả về kết quả tổng hợp cùng với mọi lỗi theo từng site. Dùng manager.tagged(tag) để giới hạn việc phân tán vào một tập con các site. Các thao tác ghi luôn đi qua một site có tên (manager.site("dc-east").vms.create(...)); proxy liên site chỉ hiển thị list().
Xử lý lỗi
Tất cả lỗi đều kế thừa VergeError với các lớp con được gõ kiểu và các hàm kiểm tra kiểu:
VergeError
Lỗi cơ sở cho tất cả lỗi SDK
ApiError
Bất kỳ lỗi HTTP nào từ API
NotFoundError
Không tìm thấy tài nguyên (404)
AuthError
Xác thực thất bại (401/403)
ConflictError
Xung đột trạng thái tài nguyên (409)
ValidationError
Dữ liệu đầu vào phía client không hợp lệ
UnsupportedVersionError
Phiên bản máy chủ quá cũ
TaskError
Tác vụ bất đồng bộ thất bại
TaskTimeoutError
Tác vụ vượt quá thời gian chờ
SiteError
Lỗi thao tác đa site
Cấu hình Client
Toàn bộ tập tùy chọn cấu hình:
Các trường hợp sử dụng phổ biến
Tự động hóa hạ tầng: Cấp phát VM, mạng và lưu trữ bằng chương trình
Tích hợp CI/CD: Tạo và hủy môi trường thử nghiệm trong pipeline
Giám sát và báo cáo: Truy vấn trạng thái tài nguyên và tạo báo cáo kiểm kê
Tự động hóa sao lưu: Lên lịch và quản lý snapshot cùng bản sao lưu đám mây
Cấp phát đa thuê bao: Tự động hóa việc tạo tenant và phân bổ tài nguyên
Điều phối đa site: Quản lý và truy vấn trên nhiều triển khai VergeOS
Tài liệu và tài nguyên
Để có tài liệu đầy đủ, bao gồm toàn bộ tham chiếu API và các ví dụ sử dụng chi tiết, hãy truy cập kho lưu trữ chính thức:
Hỗ trợ
Nếu bạn gặp sự cố hoặc có yêu cầu tính năng, vui lòng mở một issue trên kho lưu trữ GitHub:
Tài nguyên bổ sung
Python SDK - Phương án thay thế Python
Go SDK - lựa chọn thay thế Go
PowerShell Module - Giải pháp thay thế PowerShell
Nhà cung cấp Terraform - Hạ tầng dưới dạng mã
Cập nhật lần cuối
Nội dung này có hữu ích không?