VMwaer vSphere環境にて、一度、GUI操作でテンプレートのデプロイを行い、その結果をカスタマイズ仕様として保存している、という状態で
VMware Power CLIを使用して、GUIの「既存のカスタマイズ仕様を使用してカスタマイズする」相当の操作を行う場合、どのようにするかを説明する。
手順のポイント
・カスタマイズ仕様は「OSCustomizationSpec」と「OSCustomizationNicMapping」の2つから成り立っている
・既存のカスタマイズ仕様をコピーした一時的なカスタマイズ仕様を作成し、それを編集して使用する
・仮想マシンの電源を1度入れないとカスタマイズされない(カスタマイズ後、再起動)
・使うcmdletは以下
カスタマイズ仕様関連
Get-OSCustomizationSpec, New-OSCustomizationSpec
Get-OSCustomizationNicMapping, Set-OSCustomizationNicMapping
テンプレートデプロイ関連
Get-VMHost
New-VM
仮想マシンのハードウェア構成変更
Get-VM, Set-VM
0. vCenterサーバに接続
vSphere PowerCLIによる操作を行う際、まずは「Connect-VIServer」により、操作対象のvCenterサーバに接続します。
下記はvCenter vAppの初期設定である「root」「vmware」で接続する場合の例です。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> Connect-VIServer -Server IPアドレス -User root -Password vmware Name Port User ---- ---- ---- IPアドレス 443 root PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
1. 既存カスタマイズ仕様をコピーしたカスタマイズ仕様を作成
既存のカスタマイズ仕様を一時的に変更してデプロイする、ということができないため、コピーしたカスタマイズ仕様を変更する、という手順を取る。
ただ、コピーの際に「-Type NonPersistent」というオプションを指定すると、このセッション中のみ使用できる一時的なカスタマイズ仕様として作成することができるため、デプロイ後の削除まで考える必要はない。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> Get-OSCustomizationSpec cent6-dep | New-OSCustomizationSpec -Name cent6-temp -Type NonPersistent Name Description Type OSType ---- ----------- ---- ------ cent6-temp NonPersistent Linux PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
2. IPアドレスなど設定
IPアドレスやデフォルトゲートウェイなどネットワークに関する設定は「Get-OSCustomizationNicMapping」にて行う。
NICを増やす場合もここで行う。
(ホスト名についてはここでは無い)
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> Get-OSCustomizationNicMapping -Spec cent6-temp | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress 172.17.44.55 -SubnetMask 255.255.0.0 -DefaultGateway 172.17.44.39 Position IPMode IPAddress DefaultGateway -------- ------ --------- -------------- 1 UseStaticIP 172.17.44.55 172.17.44.39 PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
3. 仮想マシンホスト名の命名規則指定
仮想マシンにつけるホスト名をどのようなルールで行うかというのを指定する。
「-NamingScheme vm」は、仮想マシンの登録名とホスト名を同じとする、というものになる。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> Get-OSCustomizationSpec cent6-temp | Set-OSCustomizationSpec -NamingScheme vm Name Description Type OSType ---- ----------- ---- ------ cent6-temp NonPersistent Linux PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
4. 仮想マシンのデプロイ
「nimblestorage」という名前のDataStoreを指定して、仮想マシンのデプロイを実施。
先の項目で、仮想マシンの登録名とホスト名を同じとしているので「-Name cent6-ip55」で指定した「cent6-ip55」がホスト名となる。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> New-VM -Name cent6-ip55 -VMHost vmserver21.vmlab.local -Template cent6-deploy -OSCustomizationSpec cent6-temp -Datastore nimblestorage Name PowerState Num CPUs MemoryGB ---- ---------- -------- -------- cent6-ip55 PoweredOff 1 2.000 PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
なお、デプロイ中に強制終了を行うと、それ以後、動作がおかしくなることがあるようだ。
今回遭遇した事例としては、下記の様なエラーがでるが、デプロイ自体は実施されていた。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> New-VM -Name cent6-ip55 -VMHost vmserver21.vmlab.local -Template cent6-deploy -OSCustomizationSpec cent6-temp -Datastore nimblestorage New-VM : 2015/07/16 18:03:02 New-VM オブジェクトの現在の状態に問題が あるため、操作は有効ではありません。 発生場所 行:1 文字:1 + New-VM -Name cent6-ip55 -VMHost vmserver21.vmlab.local -Template cent6-depl oy ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: (:) [New-VM], VimException + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomatio n.ViCore.Cmdlets.Commands.NewVM PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
5. CPU/メモリの変更
作成した仮想マシンのCPUとメモリの割り当てを「Set-VM」で変更します。
Set-VMで「-Name」というオプションがありますが、仮想マシンを指定する際は「-VM 仮想マシン名」という風に指定します。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> Set-VM -VM cent6-ip55 -NumCpu 2 -MemoryMB 4 Confirmation Proceed to configure the following parameters of the virtual machine with name 'cent6-ip55'? New MemoryMB: 4MB New NumCpu: 2 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ(既定値は "Y"): y Name PowerState Num CPUs MemoryGB ---- ---------- -------- -------- cent6-ip55 PoweredOff 2 0.004 PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
上記の様にメモリ容量については、MB単位となります。
「4G」といった指定はエラーとなるので、整数値で入力する必要があります。
4Gであれば下記の様に「4096」と指定します。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> Set-VM -VM cent6-ip55 -NumCpu 2 -MemoryMB 4096 Confirmation Proceed to configure the following parameters of the virtual machine with name 'cent6-ip55'? New MemoryMB: 4096MB New NumCpu: 2 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ(既定値は "Y"): y Name PowerState Num CPUs MemoryGB ---- ---------- -------- -------- cent6-ip55 PoweredOff 2 4.000 PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
6. 仮想マシンの電源ON
PowerShellから電源オンを行う場合は「Start-VM」を使用する。
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> Start-VM -VM cent6-ip55 Name PowerState Num CPUs MemoryGB ---- ---------- -------- -------- cent6-ip55 PoweredOn 2 4.000 PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>
電源投入後、初回起動時にホスト名/IPアドレスの設定スクリプトが実行される。
完了後、自動的に再起動される。
7. デプロイ完了
再起動が終わったらデプロイが完了となる。