VMware vSphere Customization Specs: Tự động hóa Deploy VM từ Template (No more manual IP/SID)

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

Nỗi ám ảnh mang tên “Trùng SID” và IP tĩnh lúc nửa đêm

Triển khai cụm 20 VM Windows Server cho dự án gấp lúc 2 giờ sáng là bài test lòng kiên nhẫn của mọi Admin. Nếu bạn chỉ đơn thuần Clone từ Template, 15 phút sau bạn sẽ có 20 máy ảo giống hệt nhau từ tên Hostname, IP đến SID (Security Identifier). Kết quả? Domain Controller từ chối join máy vì xung đột, hệ thống báo lỗi loạn xạ.

Ngồi gõ Sysprep hay đổi IP thủ công cho từng máy lúc này thực sự là thảm họa. Nếu bên Linux có Cloud-init thì VMware vSphere cung cấp một giải pháp chuyên nghiệp hơn: VMware vSphere Customization Specifications.

vCenter sẽ can thiệp sâu vào Guest OS ngay khi triển khai từ Template. Bạn có thể tự động đặt tên máy, cấu hình mạng và reset SID mà không cần mở Console máy ảo. Cách làm này giúp tiết kiệm khoảng 80% thời gian so với thao tác tay.

Checklist trước khi bắt đầu (Đừng bỏ qua!)

Nếu thiếu các điều kiện này, bạn sẽ nhận ngay thông báo lỗi “Customization of the guest operating system is not supported”. Hãy kiểm tra kỹ:

  • VMware Tools: Đây là cầu nối bắt buộc. Template phải được cài sẵn VMware Tools và đang ở trạng thái Power Off.
  • vCenter Server: Tính năng này không hỗ trợ trên bản ESXi rời (Free version).
  • Guest OS Compatibility: Hầu hết Windows Server và các bản Distro Linux phổ biến (Ubuntu, CentOS, RHEL) đều chạy tốt.
  • Sysprep: Windows đời mới đã tích hợp sẵn. Với Windows XP hoặc Server 2003, bạn phải upload file Sysprep lên vCenter thủ công.

Thiết lập Customization Specification chi tiết

Để bắt đầu, hãy truy cập Menu -> Policies and Profiles -> VM Customization Specifications trên vSphere Client.

1. Cấu hình cho Windows (Xử lý SID và Domain)

Dưới đây là vài lưu ý thực chiến khi tạo Spec cho Windows:

  • Computer Name: Đừng chọn “Use the virtual machine name”. Tên VM trên vSphere thường dài hoặc chứa ký tự đặc biệt, trong khi NetBIOS của Windows giới hạn 15 ký tự. Hãy chọn “Enter a name in the deployment wizard”.
  • Administrator Password: Thiết lập mật khẩu Admin cục bộ. Tôi thường chọn “Automatically log on as Administrator” 1 lần để các script khởi tạo có thể tự chạy ngay sau khi boot.
  • Generate New SID: BẮT BUỘC tích vào ô này. Đây là thao tác chạy Sysprep để định danh lại máy ảo trong môi trường Active Directory.

2. Quản lý Network: IP tĩnh hay DHCP?

Đây là phần giá trị nhất của Customization Spec. Bạn có thể gán IP tĩnh mà không cần login vào OS:

  • Chọn Manually enter settings.
  • Tại phần IPv4, hãy chọn “Prompt the user for an IP address when the specification is used”. Lựa chọn này giúp Spec linh hoạt hơn, cho phép bạn nhập IP riêng cho mỗi máy khi deploy.
  • Điền sẵn Gateway và DNS Server để tránh nhập đi nhập lại nhiều lần.

3. Cấu hình cho Linux (Hostname và DNS)

Linux đơn giản hơn vì không có SID. vCenter sẽ tự chỉnh sửa các file /etc/hostname và cấu hình network (như Netplan trên Ubuntu) cho bạn.

# Thay vì phải gõ thủ công cho từng máy:
hostnamectl set-hostname server-01
sedo -i 's/old/new/g' /etc/hosts
# Spec sẽ tự xử lý toàn bộ quá trình này.

Triển khai và Giám sát

Khi thực hiện Deploy VM from Template, tại bước “Select customization options”, bạn chỉ cần chọn Customize the operating system và trỏ về Spec đã tạo.

Dấu hiệu nhận biết quá trình thành công

Đừng hoảng khi thấy máy ảo khởi động lại 2-3 lần. Đó là lúc Sysprep đang làm việc. Hãy theo dõi tab Events của VM trên vCenter. Khi thấy dòng “Customization succeeded”, nghĩa là máy ảo của bạn đã sẵn sàng với đầy đủ danh tính mới.

Nếu bạn lười dùng chuột, hãy dùng PowerCLI để tạo hàng loạt VM chỉ với vài dòng lệnh:


$vmName = "Web-Srv-01"
$template = Get-Template -Name "Win2019-Template"
$spec = Get-OSCustomizationSpec -Name "Windows-Standard-Spec"

New-VM -Name $vmName -Template $template -OSCustomizationSpec $spec -Datastore "Pure-Storage-01"
Start-VM -VM $vmName

Mẹo nhỏ tránh lỗi “Mất mạng” sau khi Deploy

Một lỗi phổ biến là máy ảo không nhận card mạng sau khi customize. Nguyên nhân thường do file quy tắc network cũ của Linux (như 70-persistent-net.rules) giữ cứng địa chỉ MAC của Template. Trước khi convert VM thành Template, hãy xóa sạch file này:

rm -f /etc/udev/rules.d/70-persistent-net.rules

Lưu ý về thời gian: Hãy đảm bảo thời gian (NTP) trên ESXi và Domain Controller đồng bộ. Nếu lệch quá 5 phút, quá trình Join Domain tự động sẽ thất bại ngay lập tức với lỗi “Clock skew”.

Làm chủ Customization Specs không chỉ giúp bạn rảnh tay mà còn loại bỏ hoàn toàn các lỗi nhập liệu thủ công. Hệ thống của bạn sẽ luôn chuẩn hóa và sẵn sàng scale-out bất cứ lúc nào.

Share: