PowerCLI の vSphere Automation API SDK モジュールで vCenter Server のマシン SSL 証明書を更新する
Table of contents
概要
以前の記事で REST API を使って vCenter Server のマシン SSL 証明書を置き換えていましたが、先日の PowerCLI 12.4 のリリースで PowerCLI のコマンドレットが追加されました。
The new vSphere Management Module A new module is introduced for vSphere Management. It is a PowerShell-based module backed by the newly introduced vSphere Automation API SDK modules. … Currently, the module contains 6 cmdlets to complement certificate management. Explore the cmdlet documentation to know more.
- Add-VITrustedCertificate
- Get-VIMachineCertificate
- Get-VITrustedCertificate
- New-VIMachineCertificateSigningRequest
- Remove-VITrustedCertificate
- Set-VIMachineCertificate
PowerCLI のリファレンスを見ると Set-VIMachineCertificate コマンドレットによりカスタム証明書でマシン SSL 証明書を置き換えることが出来るようです。
VMCA 署名付き証明書でのマシン SSL 証明書の更新を行うためのコマンドレットは実装されていないようでしたが、REST API を叩くための関数(Invoke-*)は既に実装されているようだったので、これを試してみたいと思います。
vSphere Automation SDK for PowerShell について
PowerCLI 12.4 では以下の3つのモジュールが追加されており、このうち VMware.Sdk.VSphere.* が vSphere Automation API を PowerShell から叩くためのローレベルな関数が含まれるモジュールで、VMware.PowerCLI.VCenter.* はそれらのラッパーのコマンドレットが含まれるモジュールのようです。
In VMware PowerCLI 12.4.0, the following modules have been added:
- VMware.Sdk.VSphere.*: Provide functionality for the vSphere Automation SDK for PowerShell.
- VMware.PowerCLI.VCenter.*: Provide PowerShell-based cmdlets for automated administration of the vSphere environment.
- VMware.PowerCLI.Sdk.*: Provide help functionalities for the PowerShell-based cmdlets. These modules have no cmdlets but are required for other modules to function correctly.
今回の VMCA 署名付き証明書でのマシン SSL 証明書の更新はコマンドレットが未実装のようなので、後者のモジュールに含まれる PowerShell 関数を使っていきます。
どのモジュールのどの関数を使うのか?
モジュールのディレクトリ構成を見ると VMware.Sdk.vSphere.vCenter.CertManagement に証明書管理に関する vSphere Automation API の PowerShell 関数が含まれており、その中の TlsApi.ps1 に Invoke-RenewTls 関数がありました。
以下は Get-Help で確認できるヘルプですが、必須のオプションは特になさそうですのでそのまま使ってみます。
1> Get-Help Invoke-RenewTls -Full
2
3NAME
4 Invoke-RenewTls
5
6SYNOPSIS
7 Renews the TLS certificate for the given duration period. After this operation completes, the services using the certificate will be restarted for the new certificate to take effect. if you do not have all of the privileges described as follows: - Operation execution requires CertificateManagement.Administer.
8
9
10SYNTAX
11 Invoke-RenewTls [[-CertificateManagementVcenterTlsRenewRequestBody] <PSObject>] [-Server <Object>] [-WithHttpInfo] [-WhatIf] [-Confirm] [<CommonParameters>]
12
13
14DESCRIPTION
15 No description available.
16
17
18PARAMETERS
19 -CertificateManagementVcenterTlsRenewRequestBody <PSObject>
20 No description available.
21
22 Required? false
23 Position? 1
24 Default value
25 Accept pipeline input? true (ByValue, ByPropertyName)
26 Accept wildcard characters? false
27
28 -Server <Object>
29
30 Required? false
31 Position? named
32 Default value
33 Accept pipeline input? false
34 Accept wildcard characters? false
35
36 -WithHttpInfo [<SwitchParameter>]
37 A switch when turned on will return a hash table of Response, StatusCode and Headers instead of just the Response
38
39 Required? false
40 Position? named
41 Default value False
42 Accept pipeline input? false
43 Accept wildcard characters? false
44
45 -WhatIf [<SwitchParameter>]
46
47 Required? false
48 Position? named
49 Default value
50 Accept pipeline input? false
51 Accept wildcard characters? false
52
53 -Confirm [<SwitchParameter>]
54
55 Required? false
56 Position? named
57 Default value
58 Accept pipeline input? false
59 Accept wildcard characters? false
60
61 <CommonParameters>
62 This cmdlet supports the common parameters: Verbose, Debug,
63 ErrorAction, ErrorVariable, WarningAction, WarningVariable,
64 OutBuffer, PipelineVariable, and OutVariable. For more information, see
65 about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216).
66
67INPUTS
68
69OUTPUTS
70 None
71
72
73
74RELATED LINKS
75 Online Version: https://developer.vmware.com/docs/vsphere-automation/latest/vcenter/api/vcenter/certificate-management/vcenter/tlsactionrenew/post/
Invoke-RenewTls で証明書を更新してみる
やることは単純で、Connect-VIServer で vCenter Server に接続後、Invoke-RenewTls を実行するだけです。
1> Connect-VIServer vcsa.api.lab
2
3Specify Credential
4Please specify server credential
5User: administrator@vsphere.local
6Password for user administrator@vsphere.local: ********
7
8
9Name Port User
10---- ---- ----
11vcsa.api.lab 443 VSPHERE.LOCAL\Administrator
12
13> Invoke-RenewTls
これを実行すると vCenter Server のサービスが再起動されるので、サービスが起動するまでしばらく待ちます。サービスが起動すればマシン SSL 証明書の更新は完了です。
おわりに
今回の記事は PowerCLI 12.4 で追加された vSphere Automation API の PowerShell モジュールを使って vCenter Server のマシン SSL 証明書を更新してみました。
PowerCLI 12.4 の時点では当該モジュールを使ったコマンドレットは6個だけですが、おそらく追加のコマンドレットも今後どんどん実装されていくと思いますので期待したいところですね。