はじめに
技術検証用環境の仮想化基盤に VMWare社の ESXi を利用している。
ESXi上に仮想マシンを展開する手段の一つとして、VMWare社から提供されている VMWare PowerCLI を利用することができる。
専用クライアントツール(~vSphere 6.0)、もしくはWebブラウザを利用してGUIベースで仮想マシンを展開することも可能であるが、
VMWare PowerCLIを利用すると構成をコマンドとして保存できる等の利点があると考える。
他にも以下のような場合に有利であると考えられる。
- 同一構成の仮想マシンを複数展開したい
- 短時間で仮想マシンを展開したい
環境とVMWare PowerCLIの導入
環境
PS> [System.Environment]::OSVersion
Platform ServicePack Version VersionString
-------- ----------- ------- -------------
Win32NT 10.0.14393.0 Microsoft Windows NT 10.0.14393.0
PS> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14393.1770
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.1770
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
PowerCLI の導入
-
管理者権限でPowerShellを起動する。
-
以下のコマンドを実行する。
PS> Install-Module -Name VMware.PowerCLI
※初回実行時は「NuGetプロバイダの導入」、「信頼されていないリポジトリからのインストール」について、実行可否を聞かれる。
PowerCLIを利用した仮想マシンの展開
以下の要領で展開する。
vCenterサーバに接続する。
PS> Connect-VIServer -Server vcenter.example.com -User <user> -Password <password>
Name Port User
---- ---- ----
vcenter.example.com 443 <user>
- コマンドレットリファレンス
PowerCLI Reference: Connect-VIServer
仮想マシンを作成する。
PS> $vm = New-VM -Name 001_hoge ` # 仮想マシン(VM)名
-VMHost esx1 ` # VMをホストするESXiサーバ
-CD ` # CDドライブを接続
-Datastore datastore-1 ` # VMDKファイルを配置するデータストア名
-DiskGB 50 ` # 仮想ディスクのサイズ(GB)
-DiskStorageFormat Thin ` # 仮想ディスクのフォーマット
-NumCPU 2 ` # ソケット数
-CoresPerSocket 1 ` # core数 / ソケット
-MemoryGB 8 ` # メモリサイズ
-GuestId rhel7_64Guest ` # ゲストOSの種別(Win2016,centos7...)
-NetworkName net-10.128.12 ` # 接続するネットワーク名
-Confirm:$false # 確認プロンプトなしで即時実行
- コマンドレットリファレンス
PowerCLI Reference: New-VM - ゲストOSの種別について
vSphere Web Services API Reference - VirtualMachineGuestOsIdentifier
仮想マシンの構成を変更する。
仮想NICタイプを VMXNet3 に変更する。
PS> $vm | Get-NetworkAdapter | Set-NetworkAdapter -Type VMXNet3 -Confirm:$false
SCSIコントローラを追加し、追加したコントローラに仮想ディスクを追加する。
- 100GB の仮想ディスクをタイプ
thin
で追加 - 準仮想化のSCSIコントローラを追加
PS> $vm | New-HardDisk -CapacityGB 100 -StorageFormat Thin[^1] | New-ScsiController -Type ParaVirtual -Confirm:$false
データストアにあるISOファイルをマウントさせる。
PS> $vm | Get-CDDrive | Set-CDDrive -ISOPath "[datastore-1] Media/CentOS-7-x86_64-Minimal-1708.iso" -StartConnected $true -Confirm:$false
仮想マシン起動
PS> $vm | Start-VM
- コマンドレットリファレンス
PowerCLI Reference: Start-VM
リモートコンソール起動
PS> $vm | Open-VMConsoleWindow
- コマンドレットリファレンス
PowerCLI Reference: Open-VMConsoleWindow
vCenterサーバとの接続を切断する。
PS> Disconnect-VIServer
リモートコンソールまで起動したのであとは、OSインストール等、後続作業に移る。
OSインストールもkickstart(Linuxの場合)を利用して自動構成し、全自動でOS構築まで完了させることができる。
VMをテンプレートから展開する場合, linuxOSの自動インストール(kickstart)の手順もいずれ。。。