最近、PowerCLI 10.0 がリリースされました。
New Release: VMware PowerCLI 10.0.0 - VMware PowerCLI Blog - VMware Blogs
とうとう macOS や Linux でも PowerCLI がサポートされるようです。
そこで Linux OS で PowerCLI をためしてみました。
今回は、Oracle Linux 7 を利用しています。
[root@vm01 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.4
PowerShell のインストール。
まず、PowerShell をインストールします。
Oracle Linux では、ORACLE の Public Yum サーバから PowerShell をインスト―ルできます。
まず、Yum リポジトリの参照先が記載されている .repo ファイルを最新化します。
[root@vm01 ~]# curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo
Oracle Linux の PowerShell は、ol7_developer リポジトリにあります。
http://yum.oracle.com/repo/OracleLinux/OL7/developer/x86_64/
「--enablerepo」でリポジトリを有効にしつつインストールします。
[root@vm01 ~]# yum install -y --enablerepo=ol7_developer powershell
PowerCLI のインストール。
PowerShell を起動します。Linux では「pwsh」です。
[root@vm01 ~]# pwsh
PowerShell v6.0.1
Copyright (c) Microsoft Corporation. All rights reserved.
Type 'help' to get help.
PS /root>
PowerCLI をインストールします。
インストール元になる PowerShell Gallery がまだ信頼されていないと確認されるので
「Y」と入力して Enter キーをおすと、ひたすらモジュールがインストールされます。
PS /root> 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
PS /root>
警告抑止のため、VMware の Customer Experience Improvement Program (CEIP) の
参加についての設定をしておきます。
ここでは $false にしておきます。(自宅ラボでは基本的に CEIP に参加していますが・・・)
PS /root> Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false -Confirm:$false
PowerCLI 10.0.0 がインストールできています。
PS /root> Get-PowerCLIVersion
WARNING: The cmdlet "Get-PowerCLIVersion" is deprecated. Please use the 'Get-Module' cmdlet instead.
PowerCLI Version
----------------
VMware PowerCLI 10.0.0 build 7895300
---------------
Component Versions
---------------
VMware Cis Core PowerCLI Component PowerCLI Component 10.0 build 7893915
VMware VimAutomation VICore Commands PowerCLI Component PowerCLI Component 10.0 build 7893909
PS /root>
WARNING にあるように、最近は Get-Module でバージョン確認するほうが
良いようなので、ついでに確認しておきます。
PS /root> Get-Module -ListAvailable -Name VMware.* | select Version,Name
Version Name
------- ----
6.5.2.7812840 VMware.DeployAutomation
6.5.2.7812840 VMware.ImageBuilder
10.0.0.7895300 VMware.PowerCLI
10.0.0.7893915 VMware.VimAutomation.Cis.Core
10.0.0.7893901 VMware.VimAutomation.Cloud
10.0.0.7893906 VMware.VimAutomation.Common
10.0.0.7893909 VMware.VimAutomation.Core
6.5.4.7567193 VMware.VimAutomation.HA
7.1.0.7547311 VMware.VimAutomation.HorizonView
10.0.0.7893904 VMware.VimAutomation.License
10.0.0.7893913 VMware.VimAutomation.Nsxt
10.0.0.7893924 VMware.VimAutomation.PCloud
10.0.0.7893910 VMware.VimAutomation.Sdk
10.0.0.7893900 VMware.VimAutomation.Srm
10.0.0.7894167 VMware.VimAutomation.Storage
1.2.0.0 VMware.VimAutomation.StorageUtility
10.0.0.7893903 VMware.VimAutomation.Vds
10.0.0.7893902 VMware.VimAutomation.Vmc
10.0.0.7893921 VMware.VimAutomation.vROps
6.5.1.7862888 VMware.VumAutomation
PS /root>
PowerCLI を使用してみる。
vCenter に接続してみます。
- 今回の vCenter のアドレスは vc-sv01.go-lab.jp です。
- 証明書エラー回避のため「 -Force」をつけています。
PS /root> Connect-VIServer vc-sv01.go-lab.jp -Force
Specify Credential
Please specify server credential
User: gowatana
Password for user gowatana: **************
Name Port User
---- ---- ----
vc-sv01.go-lab.jp 443 GO-LAB\gowatana
PS /root> $global:DefaultVIServer | Format-List Name,Version,Build,ProductLIne
Name : vc-sv01.go-lab.jp
Version : 6.5.0
Build : 7515524
ProductLine : vpx
PS /root>
まだ Windows 版ほどの完成度ではないようですが、
基本的に Windows 版と同様のコマンドレットがあるようで vSAN 系のものも含まれています。
PS /root> Get-Cluster vsan-cluster-* | Get-VsanClusterConfiguration | Sort-Object Cluster
Cluster VsanEnabled IsStretchedCluster Last HCL Updated
------- ----------- ------------------ ----------------
vsan-cluster-01 True
vsan-cluster-02 True
vsan-cluster-03 True True 2018/01/28 12:01:23
PS /root> Get-Cluster vsan-cluster-01 | Get-VsanRuntimeInfo | Sort-Object VMHost | ft -AutoSize
Cluster VMHost ResyncTrafficMbps
------- ------ -----------------
vsan-cluster-01 hv-i21.go-lab.jp 0
vsan-cluster-01 hv-i22.go-lab.jp 0
vsan-cluster-01 hv-i23.go-lab.jp 11
vsan-cluster-01 hv-i24.go-lab.jp 4
vsan-cluster-01 hv-i25.go-lab.jp 5
vsan-cluster-01 hv-i26.go-lab.jp 5
PS /root>
また、PowerCLI の Linux 対応以前に
Linux 環境での PowerShell の使い方にも注意が必要そうです。
たとえば以前の投稿で使用したスクリプト「get_vsan_summary.ps1」を実行してみると、
「sort」でエラーになってしまいました。
下記のような感じになったりします。
Linux の sort コマンドを実行しようとしてしまったりするようです。
PS /root> Get-Cluster | sort name
/usr/bin/sort: cannot read: name: そのようなファイルやディレクトリはありません
これについては、エイリアスの「sort」ではなく
ちゃんと Sort-Object とするとこの問題は回避できます。
PS /root> Get-Cluster | Sort-Object Name
Name HAEnabled HAFailover DrsEnabled DrsAutomationLevel
Level
---- --------- ---------- ---------- ------------------
ha-cluster-01 False 1 False FullyAutomated
ha-cluster-02 True 1 True FullyAutomated
ha-cluster-03 False 1 False FullyAutomated
vsan-cluster-01 True 1 True FullyAutomated
vsan-cluster-02 True 1 True PartiallyAutomated
vsan-cluster-03 False 1 False FullyAutomated
work-cluster-01 False 1 False FullyAutomated
以前の投稿の get_vsan_summary.ps1 スクリプトだと
下記のような感じの置換ですみましたが・・・
これまでの PowerShell / PowerCLI のバージョンアップよりも
修正箇所が多くなりそうな予感がします。
PS /root> sed -i "s/sort/Sort-Object/g" ./get_vsan_summary.ps1
私の場合、PowerShell のエイリアスを利用していたり、
ちょっと癖のあるスクリプトを作成したりすることがあるので
シンプルなコマンドライン / スクリプト作成を心掛けつつ
Linux 版 PowerCLI も徐々に利用していこうと思います。
以上、PowerCLI 10.0 を Linux で使用してみる話でした。