For the complete documentation index, see llms.txt. This page is also available as Markdown.

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ý
}
Tham số
Bắt buộc
Mô tả

host

URL hoặc địa chỉ IP của hệ thống hoặc tenant VergeOS

username

Tên người dùng VergeOS với quyền phù hợp

password

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à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:

Tài nguyên
Mục đích
Thuộc tính chính

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_drivevergeio_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:

Nguồn dữ liệu
Trả về

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

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 sourcebuild 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:

  1. Packer xây dựng và gia cố golden image theo lịch (ví dụ: chu kỳ vá hàng tháng)

  2. Image được đăng ký như một Recipe VM trong VergeOS Marketplace

  3. 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

  4. 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:

Giai đoạn
Công cụ
Mục đích

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

Cầu nối VMware

Trên VMware, nhà cung cấp vSphere của Terraform quản lý ESXi/vCenter/vSAN như các mối quan tâm riêng biệt và Packer sử dụng vsphere-iso trình dựng qua vCenter. Nhà cung cấp vergeio VergeOS duy nhất xử lý VM, mạng, ổ đĩa và người dùng thông qua một endpoint API, và plugin Packer nhắm tới cùng API đó.

Cầu nối Nutanix

Nhà cung cấp Terraform của Nutanix (nutanix/nutanix) và plugin Packer đều nhắm tới API v3 của Prism Central. Nhà cung cấp VergeOS giao tiếp với một endpoint duy nhất (URL hệ thống hoặc tenant VergeOS) mà không có instance quản lý riêng, và hiển thị cấu hình cloud-init trực tiếp trên vergeio_vm tài nguyên thông qua cloudinit_datasource thuộc tính và vergeio_cloudinitfiles nguồn dữ liệu.

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.tfstate vào hệ thống kiểm soát phiên bản — nó có thể chứa thông tin xác thực

  • Khó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 log

  • Hạ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?