PowerCLIを使った仮想化の自動運用
仮想マシンの情報取得
最初に仮想マシンの情報を取得してみましょう。Get-VMコマンドで仮想マシンの一覧(仮想マシン名、電源状態、CPU数、メモリ容量など)が確認できます。
図3:Get-VMコマンドの実行例(クリックで拡大) |
メンバー変数の確認
PowerCLIをインストールすると「vSphere PowerCLI Cmdlets Reference」ヘルプが一緒にインストールされます。コマンドの使い方などの詳細はそちらを参考にしてください。
PowerShellはオブジェクト指向だと最初に書きましたが、各コマンドの戻り値は実はオブジェクトです。オブジェクトなのでメンバー変数もあります。どんなメンバー変数(プロパティ)があるかを確認するには、以下のコマンドを実行します。出力結果は省略しますが、皆さんも一度試してみてください。
Get-VM | Get-Member
詳細の出力
では、仮想マシン名「vCenter」の情報をもう少し詳しく確認してみましょう。「Select-Object」で表示したいオブジェクトを確認することができます。今回は、仮想マシン名、電源ステータス、CPU数、メモリ、ネットワークアダプタ情報を表示させました。
Get-VM -Name vCenter | Select-Object Name, PowerState, NumCpu, MemoryMB, NetworkAdapters
図4:Get-VMの詳細情報確認の実行例(クリックで拡大) |
実例紹介
ここからはRePlavailなどで実際に使用しているスクリプトを一部抜粋して実例を紹介していこうと思います。
仮想マシンの新規作成
仮想マシンの新規作成もコマンドから作成することができます。メモリーサイズなどは「-MemoryMB」で指定できますが、引数をカッコつきで「(1024*2)」などと指定すると計算された結果が引数として利用されますので便利です。
New-VM -Name 'win2k3-001' -vmhost (Get-VMHost -Name 192.168.0.221) -Datastore 'datastore' -NumCpu 1 -DiskMB (1024*30) -MemoryMB (1024*2) -DiskStorageFormat 'thin' -GuestID 'winNetStandardGuest'
仮想マシン名を「win2k3-001」としていますが、「win2k3-001」から「win2k3-005」の5台の仮想マシンを作成したい場合は以下のとおりです。
1..5 | foreach { New-VM -Name ("win2k3-{0:000}" -F $_) -vmhost (Get-VMHost -Name 192.168.0.221) -Datastore 'datastore' -NumCpu 1 -DiskMB (1024*30) -MemoryMB (1024*1) -DiskStorageFormat 'thin' -GuestID 'winNetStandardGuest' }
「1..5」で1から5までの配列が作成されます。それを「foreach」で受け取ります。「$_」は「現在のパイプライン オブジェクト」となりますので、1から5が順番に入ります。今回のポイントは、「"win2k3-{0:000}" -F $_」になります。この表現は文字列書式のフォーマットで「win2k3-001」から「win2k3-005」までを作成します。
実行結果は以下のとおりです。作成された仮想マシンの一覧が表示されます。
図5:仮想マシン作成の実行例(クリックで拡大) |