Terraform & Packer
Hạ tầng dưới dạng mã mang tính khai báo cho VergeOS bằng nhà cung cấp Terraform, OpenTofu và plugin Packer để tự động tạo golden image.
Hạ tầng như mã (IaC) mang cùng khả năng kiểm soát phiên bản, rà soát đồng cấp và tính lặp lại mà các nhóm phần mềm dựa vào để cung cấp hạ tầng. Phần nhà cung cấp Terraform VergeOS cho phép bạn khai báo VM, mạng và người dùng trong các tệp cấu hình HCL, trong khi plugin Packer tự động hóa việc tạo golden image. Kết hợp lại, chúng tạo thành một quy trình khai báo: Packer tạo image, Terraform triển khai hạ tầng.
Nhà cung cấp Terraform
Nhà cung cấp Terraform VergeOS được đăng trên Terraform Registry và hoàn toàn tương thích với OpenTofu (bản fork Terraform mã nguồn mở). Nó cho phép bạn quản lý tài nguyên VergeOS thông qua các quy trình chuẩn terraform plan / terraform apply quy trình làm việc.
Cấu hình nhà cung cấp
terraform {
required_providers {
vergeio = {
source = "verge-io/vergeio"
version = "~> 0.1.0"
}
}
}
provider "vergeio" {
host = "https://vergeos.example.com"
username = "admin"
password = var.vergeos_password
insecure = true # Đặt thành true cho chứng chỉ SSL tự ký
}host
Có
URL hoặc địa chỉ IP của hệ thống hoặc tenant VergeOS
username
Có
Tên người dùng VergeOS với quyền phù hợp
password
Có
Mật khẩu cho người dùng được chỉ định (đánh dấu là nhạy cảm)
insecure
Không
Đặt true để chấp nhận chứng chỉ SSL tự ký
Tương thích với OpenTofu
Cấu hình nhà cung cấp giống hệt cho OpenTofu. Chỉ cần thay thế terraform bằng các lệnh tofu — không cần thay đổi mã.
Tài nguyên
Nhà cung cấp hiện tại hỗ trợ bốn loại tài nguyên được quản lý để tạo và cập nhật các đối tượng VergeOS:
vergeio_vm
Tạo và quản lý máy ảo
cpu_cores, ram, os_family, machine_type, ha_group, cụm, guest_agent, uefi, secure_boot, snapshot_profile, powerstate, nội tuyến vergeio_drive và vergeio_nic blocks
vergeio_network
Cấu hình mạng ảo
network_address (CIDR), dhcp_enabled, dhcp_start, dhcp_end, dns_server_list, gateway, powerstate
vergeio_user
Cấp phát người dùng
Quản lý tài khoản người dùng trong VergeOS
vergeio_member
Quản lý thành viên nhóm
Gán người dùng vào các nhóm cho RBAC
Nguồn dữ liệu
Tám nguồn dữ liệu chỉ đọc cho phép bạn truy vấn các đối tượng VergeOS hiện có để dùng trong cấu hình của mình:
vergeio_version
Thông tin phiên bản VergeOS hiện tại
vergeio_clusters
Các cụm tính toán/lưu trữ khả dụng
vergeio_nodes
Các node trong môi trường
vergeio_networks
Các mạng ảo hiện có
vergeio_vms
Máy ảo (có thể lọc theo tên, trạng thái snapshot)
vergeio_groups
Nhóm người dùng cho RBAC
vergeio_mediasources
Các file ISO và media đã tải lên
vergeio_cloudinitfiles
Các tệp cấu hình cloud-init khả dụng
Ví dụ HCL
VM với ổ đĩa và NIC
Ví dụ này tạo một máy chủ web Linux với một ổ đĩa virtio-scsi 10 GB và một NIC được gắn vào mạng nội bộ:
Mạng nội bộ với DHCP
Truy vấn các VM hiện có
Sử dụng nguồn dữ liệu để tham chiếu hạ tầng hiện có mà không quản lý nó:
Tích hợp Cloud-Init
Tính năng vergeio_vm Tài nguyên hỗ trợ cloud-init cho tự động hóa lần khởi động đầu tiên. Lược đồ nhà cung cấp cung cấp một cloudinit_datasource thuộc tính trên VM và một vergeio_cloudinitfiles nguồn dữ liệu để tham chiếu các tệp cloud-init đã tồn tại trong VergeOS:
Để biết cú pháp chính xác dùng để đính kèm tệp cloud-init nội tuyến trên tài nguyên VM (thay vì tham chiếu các tệp đã tải lên trước qua nguồn dữ liệu), hãy xem kho mã của nhà cung cấp — dạng ở cấp trường có thể thay đổi giữa các bản phát hành.
Độ trưởng thành & lộ trình
Kiểm tra phạm vi tài nguyên hiện tại
Nhà cung cấp Terraform VergeOS hiện đang được phát triển tích cực, và không phải mọi đối tượng VergeOS đều đã được hiển thị dưới dạng tài nguyên được quản lý. Các ví dụ về những khu vực có thể chưa được hỗ trợ đầy đủ vào một thời điểm nhất định bao gồm cấp phát tenant, quản lý snapshot profile và cấu hình mạng ngoài/WAN.
Luôn kiểm tra kho GitHub và danh sách Terraform Registry về phạm vi tài nguyên hiện tại cùng ghi chú phát hành trước khi thiết kế cấu hình dựa trên chúng.
Plugin Packer
Tính năng Plugin Packer cho VergeOS (github.com/verge-io/packer-plugin-vergeio) tự động hóa việc tạo image VM trực tiếp trên nền tảng VergeOS. Trong khi Terraform quản lý hạ tầng đang chạy, Packer tập trung vào việc xây dựng các golden image làm nền tảng cho các triển khai.
Tại sao dùng Packer?
Golden image đảm bảo mọi VM được triển khai đều bắt đầu từ một nền tảng đã biết, đã kiểm thử và đã được gia cố. Thay vì cấp phát một HĐH trống rồi chạy các script cấu hình trên mỗi lần triển khai, Packer chỉ cần tạo sẵn image một lần:
Tính nhất quán — Mọi VM được tạo từ image đều giống hệt nhau
Tốc độ — Không có độ trễ cấp phát ở lần khởi động đầu tiên; VM sẵn sàng ngay lập tức
Tuân thủ — Các đường cơ sở bảo mật và bản vá được tích hợp sẵn ngay khi xây dựng
Tích hợp đường ống — Kích hoạt xây dựng lại image từ CI/CD vào các ngày vá HĐH
Cấu hình plugin
Plugin Packer được khai báo trong một required_plugins khối cùng với một source và build cho image đích. Tên trường chính xác cho khối source "vergeio" (endpoint, thông tin xác thực, kích thước VM, tùy chọn đĩa, v.v.) nên được lấy từ kho plugin, vì chúng có thể thay đổi giữa các bản phát hành:
Một khai báo required_plugins điển hình sẽ như sau:
Khả năng
Ở mức độ tổng quan, plugin điều khiển toàn bộ vòng đời xây dựng Packer qua API VergeOS — tạo một VM tạm thời, chạy các provisioner và lưu lại image kết quả. Để biết lược đồ cấu hình chính xác, các kiểu guest được hỗ trợ và hành vi tắt/dọn dẹp, hãy tham khảo trực tiếp kho plugin:
Đường ống Packer → Recipe
Các image Packer tích hợp tự nhiên với hệ thống VergeOS Recipe Recipe của VergeOS. Quy trình điển hình:
Packer xây dựng và gia cố golden image theo lịch (ví dụ: chu kỳ vá hàng tháng)
Image được đăng ký như một Recipe VM trong VergeOS Marketplace
Người dùng triển khai các VM chuẩn hóa từ recipe — thông qua giao diện người dùng hoặc qua Terraform
Cập nhật diễn ra tự động: xây dựng lại image Packer, cập nhật recipe, và tất cả các triển khai mới sẽ nhận phiên bản mới nhất
Mẫu quy trình IaC
Quy trình chỉ dùng Terraform
Dành cho các nhóm muốn hạ tầng khai báo mà không có pipeline tạo image:
Pipeline đầy đủ (Packer + Terraform)
Dành cho môi trường sản xuất với quản lý golden image:
Kết hợp với các công cụ khác
Terraform xử lý việc cấp phát; các công cụ quản lý cấu hình xử lý phần còn lại:
Tạo image
Packer
Xây dựng golden image đã được gia cố
Cấp phát
Terraform
Triển khai VM, mạng, người dùng
Cấu hình
Ansible / cloud-init
Cấu hình phần mềm sau triển khai
Giám sát
Prometheus / cảnh báo VergeOS
Theo dõi hạ tầng đã triển khai
Thực hành tốt nhất
Quản lý trạng thái
Sử dụng backend trạng thái từ xa (S3, Consul, Terraform Cloud) để cộng tác nhóm
Không bao giờ commit
terraform.tfstatevào hệ thống kiểm soát phiên bản — nó có thể chứa thông tin xác thựcKhóa các tệp trạng thái để ngăn sửa đổi đồng thời trong môi trường nhiều người dùng
Bảo mật
Sử dụng biến cho các giá trị nhạy cảm (
var.vergeos_password) — không bao giờ mã hóa cứng thông tin xác thựcĐánh dấu output nhạy cảm với
sensitive = trueđể tránh vô tình lộ trong logHạn chế quyền của nhà cung cấp — tạo một người dùng API VergeOS riêng với mức truy cập tối thiểu cần thiết
Tổ chức module
Tách các môi trường thành các workspace hoặc thư mục (
dev/,staging/,prod/)Tạo các module có thể tái sử dụng cho các mẫu thường dùng (ví dụ: một module "web-server" với VM + mạng + quy tắc tường lửa)
Cố định phiên bản nhà cung cấp để tránh các thay đổi gây lỗi bất ngờ khi nâng cấp
Đọc thêm
Cập nhật lần cuối
Nội dung này có hữu ích không?