この記事では vSphere Lifecycle Manager (vLCM) にアップロードした ESXi のコンポーネントを削除する手順を紹介します。
免責事項: これは英文の記事 Removing imported components from vSphere Lifecycle Manager (vLCM) の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
VMware vCenter Server
作業前に、問題が発生した場合に備え vCenter Server のオフラインスナップショットの取得を推奨します。vCenter Server Appliance のスナップショットを取得する際のベストプラクティスは Snapshot Best Practices for vCenter Server Virtual Machines をご覧ください。
削除しようとしているコンポーネントがベースラインで使用されている場合、予めそれらのベースラインを削除してください。ベースラインの削除方法は Delete Baselines and Baseline Groups をご覧ください。
Connect-CisServer を使用して vCenter Server に接続します。
Connect-CisServer -Server <IP Address or FQDN of vCenter Server> -Username <Username> -Password <Password> -Force
次のスクリプトを実行し、vLCM の全てのコンポーネントの ID (ComponentId) が列挙します。
$owner = '[email protected]'
$offlineDepotService = Get-CisService -Name com.vmware.esx.settings.depots.offline
$allComponents = $offlineDepotService.list()
$results = @()
foreach ($component in $allComponents.GetEnumerator())
{
if($component.Value.owner.toLower() -eq $owner) {
$tmp = [PSCustomObject] @{
ComponentId = $component.Key
}
$results += $tmp
}
}
$results
スクリプトを実行すると次のような出力が得られます。
ComponentId
-----------
31EAF1F762D76470C952##################F7
815D3DB5985161B5F5F7##################C5
以降の手順では、このスクリプトで得られた ComponentId の値を使用します。
次のスクリプトを実行し、各コンポーネントの詳細情報を出力します。スクリプトの行頭の componentId の値は Step 2 で得られたものに置き換えてください。
$componentId = "31EAF1F762D76470C952##################F7"
$offlineDepotContentService = Get-CisService -Name com.vmware.esx.settings.depots.offline.content
$componentDetails = $offlineDepotContentService.get($componentId).metadata_bundles
$results = @()
foreach ($componentDetail in $componentDetails.GetEnumerator())
{
foreach ($component in $componentDetail.Value.independent_components.GetEnumerator()) {
$tmp = [PSCustomObject] @{
ComponentName = $component.Key
ComponentVersion = $component.Value.versions.version
ComponentDirectory = $componentDetail.Key
ComponentFile = $componentDetail.Value.file_name
}
$results += $tmp
}
}
$results
スクリプトを実行すると次のような結果が得られます。
ComponentName ComponentVersion ComponentDirectory ComponentFile
------------- ---------------- ------------------ -------------
VMware-VM-Tools {12.5.3.24819442-24820517, 12.5.3-6.X.24819442} vmw metadata-151.zip
componentId に対応するコンポーネントの名前が、削除しようとしているコンポーネントと一致していることを確認してください。コンポーネント名が異なる場合は、行頭の componentId の値を別のものに置き換えて再びスクリプトを実行し、削除したいコンポーネントの ID を探します。
次のスクリプトでコンポーネントを削除します。実行すると vCenter Server で "デポの削除" というタスクが作成され、デポが削除されます。
$componentId = '31EAF1F762D76470C952##################F7'
$offlineDepotService = Get-CisService -Name com.vmware.esx.settings.depots.offline
$offlineDepotService.'delete$task'($componentId)
もしコンポーネントが一つ以上のベースラインで使用されている場合は、"デポの削除" のタスクは "指定されたデポのコンテンツは、一部のベースラインまたは目的の状態によって参照されています" というメッセージとともに失敗します。このエラーが発生した場合、ベースラインまたはベースライングループでコンポーネントが使用されていないかを再確認してください。ベースラインの削除方法については「作業前の注意事項」のセクションをご覧ください。