深夜の「SID重複」と固定IP設定という悪夢
急ぎのプロジェクトで深夜2時に20台のWindows Server VMをデプロイするのは、あらゆる管理者の忍耐力が試される瞬間です。単にテンプレートからクローンを作成すると、15分後にはホスト名、IP、さらにはSID(Security Identifier)まで全く同じ20台の仮想マシンが出来上がってしまいます。その結果、ドメインコントローラーは競合のために参加を拒否し、システムはエラーを連発することになります。
一台ずつ手動でSysprepを実行したりIPを変更したりするのは、まさに惨事です。LinuxにCloud-initがあるように、VMware vSphereにはよりプロフェッショナルな解決策があります。それが VMware vSphere Customization Specifications です。
vCenterは、テンプレートからのデプロイ時にゲストOSに深く介入します。仮想マシンのコンソールを開くことなく、マシン名の設定、ネットワーク構成、SIDのリセットを自動的に行うことができます。この方法により、手動操作と比較して時間を約80%節約できます。
開始前のチェックリスト(これを見逃さないでください!)
以下の条件が欠けていると、「Customization of the guest operating system is not supported」というエラーが表示されます。事前に確認してください:
- VMware Tools: 必須の架け橋です。テンプレートにはVMware Toolsがインストール済みで、電源がオフの状態である必要があります。
- vCenter Server: この機能は、スタンドアロンのESXi(無料版)ではサポートされていません。
- Guest OS Compatibility: ほとんどのWindows Serverおよび主要なLinuxディストリビューション(Ubuntu, CentOS, RHEL)で動作します。
- Sysprep: 最新のWindowsには組み込まれています。Windows XPやServer 2003の場合、SysprepファイルをvCenterに手動でアップロードする必要があります。
Customization Specificationの設定詳細
設定を開始するには、vSphere Clientで メニュー -> ポリシーおよびプロファイル -> VMカスタマイズ仕様 にアクセスします。
1. Windowsの設定(SIDとドメインの処理)
Windows用の仕様(Spec)を作成する際の、実践的な注意点は以下の通りです:
- コンピュータ名: 「仮想マシン名を使用する」は選ばないでください。vSphere上のVM名は長かったり特殊文字を含んでいたりすることがありますが、Windows hostのNetBIOS名は15文字に制限されています。「デプロイウィザードで名前を入力する」を選択しましょう。
- 管理者パスワード: ローカル管理者のパスワードを設定します。私は通常、起動直後に初期化スクリプトが自動実行されるよう、「管理者として自動的にログインする」を1回に設定します。
- 新しいSIDの生成: 必須 の項目です。これにチェックを入れることで、Active Directory環境で仮想マシンを再識別するためのSysprepが実行されます。
2. ネットワーク管理:固定IPかDHCP?
これはCustomization Specの最も価値のある部分です。OSにログインせずに固定IPを割り当てることができます:
- 「設定を手動で入力する」を選択します。
- IPv4セクションで、「仕様が使用されるときにユーザーにIPアドレスをプロンプトする」を選択します。これにより、デプロイのたびに各マシンに個別のIPを入力できるようになり、仕様の柔軟性が高まります。
- 何度も入力する手間を省くため、ゲートウェイとDNSサーバーはあらかじめ入力しておきましょう。
3. Linuxの設定(ホスト名とDNS)
LinuxはSIDがないため、よりシンプルです。vCenterは /etc/hostname やネットワーク設定(UbuntuのNetplanなど)を自動的に書き換えてくれます。
# 各マシンで手動入力する代わりに:
hostnamectl set-hostname server-01
sed -i 's/old/new/g' /etc/hosts
# 仕様(Spec)がこのプロセス全体を自動的に処理します。
デプロイと監視
「テンプレートから仮想マシンをデプロイ」を実行する際、「カスタマイズオプションの選択」ステップで 「ゲストOSをカスタマイズする」 を選択し、作成した仕様を指定します。
成功を確認するサイン
仮想マシンが2〜3回再起動しても慌てないでください。それはSysprepが動作している証拠です。vCenterのVMの 「イベント」 タブを確認してください。「カスタマイズが成功しました」 という行が表示されれば、仮想マシンは新しいアイデンティティで準備完了です。
マウス操作が面倒な場合は、PowerCLIを使用して数行のコマンドで大量のVMを作成できます:
$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
デプロイ後の「ネットワーク切断」エラーを防ぐコツ
よくあるエラーとして、カスタマイズ後に仮想マシンがネットワークカードを認識しないことがあります。これは通常、Linuxの古いネットワークルールファイル(70-persistent-net.rules など)がテンプレートのMACアドレスを保持していることが原因です。VMをテンプレートに変換する前に、このファイルを削除してください:
rm -f /etc/udev/rules.d/70-persistent-net.rules
時刻に関する注意: ESXiとドメインコントローラーの時刻(NTP)が同期していることを確認してください。5分以上のズレがあると、自動ドメイン参加は「Clock skew(時計のズレ)」エラーで即座に失敗します。
Customization Specsをマスターすることで、手間が省けるだけでなく、手入力によるミスを完全に排除できます。システムは常に標準化され、いつでもスケールアウト可能な状態になります。

