Flash終了でvSphereクライアントが使えなくなるし、たまにはCLIから操作してみませんか!?
tl; dr
- MacにPowerShellを入れる
- PowerCLIを入れる
- Happy Hacking
導入方法
MacにPowerShellを入れる
OSS化したおかげで、あの!PowershellがMacで使えるようになった。
こんなの誰が使うんや…。
$ brew cask install powershell
$ pwsh
PS /Users/username/>
PowerCLIを入れる
PowerCLIはVMWareの各製品をCLI上で操作できるツールらしい。
Powershell上からワンコマンドで導入できる。
https://docs.vmware.com/jp/VMware-vSphere/6.5/com.vmware.vsphere.install.doc/GUID-F02D0C2D-B226-4908-9E5C-2E783D41FE2D.html
PS /Users/username> Install-Module -Name VMware.PowerCLI -Scope CurrentUser
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running
the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
Happy Hacking!
以上でvSphereへのログイン→操作→ログアウトという一連の操作ができるようになる。
PS /Users/username> Connect-VIServer -Server HOSTNAME -User ****** -Password ******
PS /Users/username> Get-VM
PS /Users/username> Disconnect-VIServer
真面目に使う
公式にPowerCLI上で使えるコマンドレット一覧がある。
Powershellの勉強も必要だが、スクリプト(.ps1)を組めば運用自動化も夢じゃない!?
事例No1. IPの衝突
帳簿上空いているはずのIPにPingを打ったら通ってしまった…。
arpコマンドでMacアドレスがわかったが、ホスト名がわからない…。
それ、PowerCLIなら解決できます。
PS /Users/username> Get-VM | Get-NetworkAdapter | select Parent,MacAddress | where MacAddress -eq XX:XX:XX:XX:XX:XX
Parent MacAddress
------ ----------
bad_host XX:XX:XX:XX:XX:XX
Get-VMコマンドでVM一覧を取得。
パイプで渡ってきたVM一覧オブジェクトのネットワークアダプタ情報を取得。
さらにパイプで渡ってきたネットワークアダプタ情報のうちParent, MacAddress列だけを射影。
最後にMacAddressがXX:XX:XX:XX:XX:XXと等しい行だけを選択。
事例No2. 電源オフは誰?
サーバーを複数台SSHからシャットダウンした。
本当に停止したか確認したいが、GUIは更新が遅くて仕事にならない…。
それ、PowerCLIなら解決できます。
PS /Users/username> Get-VM | Where { $_.PowerState -eq "PoweredOff" }
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
host1 PoweredOff 6 31.781
host2 PoweredOff 6 31.781
host3 PoweredOff 8 128.000
hosw4 PoweredOff 6 31.781
参考