Ba cấp độ tiến hóa khi quản trị hạ tầng VMware
Nếu đang quản trị VMware, khả năng cao bạn đang nằm ở một trong ba “vùng” tiến hóa dưới đây. Hãy thử xem mình đang ở đâu nhé.
- Cấp độ 1: Quản trị thủ công (GUI-based). Bạn đăng nhập vCenter, chuột phải vào Cluster và chọn “New Virtual Machine”. Cách này ổn nếu chỉ tạo 1-2 máy. Tuy nhiên, nếu cần 20 máy ảo chạy K8s, việc ngồi “Next-Next-Finish” suốt 2 tiếng là một cực hình.
- Cấp độ 2: Scripting (PowerCLI). Bạn dùng PowerShell để ra lệnh cho vCenter. Cách này nhanh nhưng mang tính “mệnh lệnh” (Imperative). Bạn phải dạy máy làm bước A, B, C. Nếu chạy script lần hai mà không kiểm tra, hệ thống rất dễ lỗi do trùng tên hoặc tài nguyên đã tồn tại.
- Cấp độ 3: Infrastructure as Code (Terraform). Đây là tư duy “khai báo” (Declarative). Bạn chỉ cần mô tả trạng thái cuối cùng. Ví dụ: “Tôi muốn 3 máy Ubuntu, 4GB RAM, Network VLAN 10”. Terraform sẽ tự tính toán để khớp với thực tế.
Tại sao Terraform lại “đáng đồng tiền bát gạo” hơn PowerCLI?
Ngày trước, mình từng mất cả buổi chiều chỉ để clone chục máy ảo Linux rồi đổi IP thủ công. Khi chuyển sang Terraform, mọi thứ thay đổi hoàn toàn. Điểm ăn tiền nhất chính là State Management.
Terraform dùng file terraform.tfstate để ghi nhớ hạ tầng. Nếu ai đó lỡ tay xóa một máy ảo trên vCenter, Terraform sẽ phát hiện ra ngay. Trong lần chạy tới, nó sẽ tự động tạo lại đúng con máy đó để khôi phục trạng thái cũ.
Tất nhiên, món này không phải toàn màu hồng. Bạn cần có tư duy lập trình cơ bản và cách tổ chức thư mục chuẩn. Nếu làm mất file state, việc đồng bộ lại hạ tầng hiện có sẽ khiến bạn tốn không ít mồ hôi hột.
Kinh nghiệm thực tế: Khi mình migrate lab từ VMware sang Proxmox, nhờ Terraform mà mình chỉ cần đổi Provider. Toàn bộ cấu hình RAM, CPU và Topology mạng được tái hiện chính xác trong chưa đầy 10 phút.
Checklist chuẩn bị trước khi “múa phím”
Để bắt đầu suôn sẻ, bạn cần chuẩn bị ba thứ sau:
- vCenter Server: Tài khoản có quyền Admin hoặc quyền tạo/xóa tài nguyên.
- Terraform Binary: Tải bản mới nhất từ HashiCorp.
- VM Template: Một máy ảo cài sẵn OS (như Ubuntu 22.04), có
open-vm-toolsvà đã convert sang Template.
Triển khai máy ảo đầu tiên qua 4 bước
Bước 1: Kết nối tới vCenter
Tạo file main.tf để khai báo thông tin vCenter. Lưu ý: Trong môi trường Lab, chúng ta thường dùng cert tự ký nên cần bật allow_unverified_ssl.
provider "vsphere" {
user = "[email protected]"
password = "MatKhauCuaBan"
vsphere_server = "vcenter.yourdomain.com"
allow_unverified_ssl = true
}
Bước 2: Truy vấn tài nguyên (Data Sources)
Thay vì điền cứng ID (hard-code) rất dễ sai, hãy để Terraform tự đi tìm ID của Datacenter hoặc Network thông qua tên gọi.
data "vsphere_datacenter" "dc" { name = "Datacenter-HN" }
data "vsphere_datastore" "ds" {
name = "Storage-SATA"
datacenter_id = data.vsphere_datacenter.dc.id
}
data "vsphere_network" "net" {
name = "VM Network"
datacenter_id = data.vsphere_datacenter.dc.id
}
Bước 3: Định nghĩa máy ảo
Đây là lúc bạn thiết kế “hình hài” cho server. Đoạn code dưới đây sẽ clone từ template và gán IP tĩnh tự động.
resource "vsphere_virtual_machine" "web" {
name = "web-server-01"
resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
datastore_id = data.vsphere_datastore.ds.id
num_cpus = 2
memory = 4096
guest_id = data.vsphere_virtual_machine.template.guest_id
network_interface { network_id = data.vsphere_network.net.id }
disk {
label = "disk0"
size = 40
}
clone {
template_uuid = data.vsphere_virtual_machine.template.id
customize {
linux_options {
host_name = "web-server-01"
domain = "itfromzero.local"
}
network_interface {
ipv4_address = "192.168.1.100"
ipv4_netmask = 24
}
ipv4_gateway = "192.168.1.1"
}
}
}
Bước 4: Chạy lệnh thực thi
Mở Terminal và chạy bộ 3 lệnh thần thánh:
terraform init: Tải plugin cần thiết.terraform plan: Xem trước các thay đổi. Hãy soi kỹ bước này để tránh xóa nhầm máy ảo đang chạy.terraform apply: Gõyesvà chờ đợi thành quả.
Lời khuyên từ thực tế vận hành
Khi đưa IaC vào thực tế, hãy nhớ ba quy tắc “sống còn” sau:
- Tuyệt đối không đẩy file state lên Git công khai. File này chứa mật khẩu và IP. Hãy dùng
.gitignorehoặc lưu trên Terraform Cloud để đảm bảo an toàn. - Tận dụng Variables. Đừng viết cứng IP vào file main. Hãy tách chúng ra file
variables.tf. Khi cần tạo 10 máy, bạn chỉ cần thay đổi con số trong biếncount. - Kết hợp Cloud-init. Đừng dừng lại ở việc tạo máy ảo. Hãy dùng
cloud-initđể tự động cài Docker hoặc add SSH key ngay khi máy vừa boot.
Chuyển sang dùng code ban đầu có thể hơi tốn công setup. Tuy nhiên, về lâu dài, hệ thống sẽ chuyên nghiệp và dễ mở rộng hơn. Quan trọng nhất là anh em quản trị sẽ “nhàn” hơn rất nhiều.

