古いOS(WIn2012等)で最新のVMware.PowerCLIをインストールする方法


古いWin2012等のOSで、VMWareのAPIであるPowerCLI動かす方法を調べてみました。
(現時点での最新バージョンは 13.2.1)

最新のVMware.PowerCLIは、以下の前提ソフトが必要なようです。
・.NET Framework 4.7.2 or later または .NET Core 3.1
・Windows PowerShell 5.1 または PowerShell 7.x

この条件は、Windows7(Win2008R2)以降であれば、MSからインストーラがダウンロードできますので、何とかなりそうです。

いろいろ試行錯誤した結果、
以下の方法で、インストール出来ることを確認しました。

  • .netframework 4.7.2 以上に更新(OS再起動要求有)

    現在の .netframework のバージョンを確認するには、以下のコマンドをpowershellで実行してください

  • Windows Management Frameworkを5.1以上に更新(OS再起動要求有)
    バージョンを確認するには、Powershell上で以下のコマンドを実行し、
    PSVersion行を確認してください。
  • Install-Moduleが「NuGet プロバイダーが必要です」というエラーで失敗する場合、
    Netの通信プロトコルをTLS1.2に変更する必要があります。
    (TLS1.2に対応していない場合、powershellで実行)。

    (設定確認)
    [Net.ServicePointManager]::SecurityProtocol
    (設定変更)
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
  • 既存PowerCLIアンインストール
    (旧バージョンを既に導入していた場合、プログラムと機能から実施)
  • PowerCLIのインストール(powershellからコマンド実行)
    Install-Module VMware.PowerCLI

これで一旦インストールできました。

なお、今までは、Connect-VIServer接続時に、証明書エラーがあっても、黄色い文字で警告が出るのみで、処理の継続ができていましたが、
PowerCLI10以降では、完全にエラーとなり、処理が進まなくなっているようです。

これを回避するには、2つあり、以下のいずれかで対応します。

  • Connect-VIServerのオプションで、-Force を付けて実行
  • Set-PowerCLIConfiguration でPowerCLIの規定値を変える

現在のPowerCLIコマンドのバージョンは以下のコマンドで確認できます。

PowerCLIのバージョンアップは、PowerCLI 6.5.1以降をPowerShell Galleryからすでにインストールしている場合は、以下のコマンドで実行できます。

PowerCLI 6.5.1以降インストール済での、PowerCLI削除は以下のコマンドで可能です。。

関連URL

Compatibility Matrix for VMware PowerCLI

.NET Framework 4.7.2 をダウンロード | 無料の公式ダウンロード (microsoft.com)

Download Windows Management Framework 5.1 from Official Microsoft Download Center

【PowerShell】Install-Module MSOnline実施時に「NuGet プロバイダーが必要です」と表示された場合 (zenn.dev)

PowerCLI のインストール (vmware.com)

PowerShell Gallery からの PowerCLI インストール・アップデート方法

PowerCLIのセキュリティ警告を無視する設定

vCenter Server のローカル ユーザー アカウントの作成についてのメモ(VCSA6.7以降で確認)

 

VCSA(vCenter Serverアプライアンス) のローカル ユーザー アカウントの作成については、コマンドで実施します。

アプライアンスシェルコマンド

ユーザリスト表示
Command> localaccounts.user.list

ユーザ作成
Command> localaccounts.user.add –role <ロール名> –username <ユーザ名> –password

<ロール名>はoperator, admin, superAdmin から選択

パスワード変更
Command> localaccounts.user.password.update –username <ユーザ名> –password

ユーザ削除
Command> localaccounts.user.delete –username <ユーザ名>

bashシェルコマンド

パスワード変更
# passwd <ユーザ名>

ただし、最近のvCenterでは、パスワードの複雑性条件がかなり高くなっているので、
パスワードによっては、以下のようなメッセージを出して、パスワードの更新に失敗します。
(ユーザそのものは作成されているようです。)

Bashシェルでのパスワード更新の場合は、以下のような感じでエラーになります。

この場合は、VCSAのローカルユーザのパスワードポリシーを変更します。

デフォルト設定(/etc/pam.d/system-passwordファイル)

この場合、パスワードは以下の条件を持たす必要があります。

[pam_cracklib.so]
大文字を1つ以上含む (dcredit=-1)
小文字を1つ以上含む (ucredit=-1)
数字を1つ以上含む (lcredit=-1)
特殊文字を1つ以上含む (ocredit=-1)
パスワード長6文字以上 (minlen=6)
前回のパスワードから4文字以上変更されている必要あり (difok=4)
rootユーザであっても、上記条件を適用する (enforce_for_root)

[pam_pwhistory.so]
過去5パスワードは再利用不可 (remember=5)

ポリシーの変更については、
具体的には/etc/pam.d/system-passwordファイルを編集します。

これで、rootユーザでログインしていれば、
localaccounts.user.addや、localaccounts.user.password.updateでパスワードが設定できるようになるようです。

passwdコマンドでのコマンドでも、ワーニングは出ますが更新できるようになります。
ワーニングも出ないようにするには、各項目も変更します。

ちなみに、デフォルトでは過去5パスワードは再利用不可なのですが、以下の行をコメント化すれば、すぐに再利用可能となります。

password required pam_pwhistory.so debug use_authtok enforce_for_root remember=5





参考URL

vCenter Server Appliance のローカル ユーザー アカウントの作成
https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.vsphere.vcenter.configuration.doc/GUID-533AE852-A1F9-404E-8AC6-5D9FD65464E5.html

【VMware】vCSAのローカルユーザ作成で苦戦した話(エラーコード:8002)
https://tech.kikublog.net/vmware-vcsa-err8002/

パスワードポリシーの変更
https://vhoge.hateblo.jp/entry/2021/05/24/003725

CentOS/パスワードの長さや文字などの制限事項を設定する方法
https://linux.just4fun.biz/?CentOS/%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AE%E9%95%B7%E3%81%95%E3%82%84%E6%96%87%E5%AD%97%E3%81%AA%E3%81%A9%E3%81%AE%E5%88%B6%E9%99%90%E4%BA%8B%E9%A0%85%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95