vm.gowatana.jp

NEOにほんごVMware(仮)

VMware Cloud Director 10.4 を PowerCLI で操作してみる。Part-03 仮想マシン ストレージ ポリシーの変更

VMware Cloud Director 10.4(VCD)で、PowerCLI を使用して vApp 仮想マシンのストレージ ポリシーを変更してみます。PowerCLI の VCD 関連モジュールにはストレージ ポリシーを操作するためのコマンドレットが見当たらなかったので、オブジェクトのもつメソッドを利用して設定変更してみます。

 

前回の内容とは直接関係しませんが、これまでの vApp と仮想マシンを設定対象として利用します。

 

今回の内容です。

 

今回の環境

VCD のテナント ポータルで確認すると、VDC「org-vdc-01」には、2つの仮想マシン ポリシー(sp-local-vmfs と sp-local-vmfs-2)が用意されています。

 

この VDC に作成されている vApp「vapp-02」には、仮想マシン「vm01」が作成されており、ストレージ ポリシー「sp-local-vmfs」が割り当てられています。

 

1. ストレージ ポリシーの取得

設定変更で指定するため、まずは組織 VDC に登録されているストレージ プロファイルを取得します。

組織 VDC(org-vdc-01)に含まれている VDC です。テナント ポータルで確認したとおり、2つのストレージ ポリシーがあります。

PS C:\> Get-OrgVdc -Name org-vdc-01 | %{$_.ExtensionData.VdcStorageProfiles.VdcStorageProfile}

Client          : VMware.VimAutomation.Cloud.Views.CloudClient
Href            : https://lab-vcd-31.vcd.go-lab.jp/api/vdcStorageProfile/1fb2df18-cb35-4190-955f-6475ade9afbd
Id              : urn:vcloud:vdcstorageProfile:1fb2df18-cb35-4190-955f-6475ade9afbd
Type            : application/vnd.vmware.vcloud.vdcStorageProfile+xml
Name            : sp-local-vmfs
AnyAttr         :
VCloudExtension :

Client          : VMware.VimAutomation.Cloud.Views.CloudClient
Href            : https://lab-vcd-31.vcd.go-lab.jp/api/vdcStorageProfile/29018504-bf94-4d54-9f7f-7aacbab6d3d4
Id              : urn:vcloud:vdcstorageProfile:29018504-bf94-4d54-9f7f-7aacbab6d3d4
Type            : application/vnd.vmware.vcloud.vdcStorageProfile+xml
Name            : sp-local-vmfs-2
AnyAttr         :
VCloudExtension :

 

このうち、sp-local-vmfs-2 のみを取得して変数に格納しておきます。

PS C:\> $vdc_storage_profiles = Get-OrgVdc -Name org-vdc-01 | %{$_.ExtensionData.VdcStorageProfiles.VdcStorageProfile}
PS C:\> $vdc_storage_profile = $vdc_storage_profiles | where {$_.Name -eq "sp-local-vmfs-2"}
PS C:\> $vdc_storage_profile

Client          : VMware.VimAutomation.Cloud.Views.CloudClient
Href            : https://lab-vcd-31.vcd.go-lab.jp/api/vdcStorageProfile/29018504-bf94-4d54-9f7f-7aacbab6d3d4
Id              : urn:vcloud:vdcstorageProfile:29018504-bf94-4d54-9f7f-7aacbab6d3d4
Type            : application/vnd.vmware.vcloud.vdcStorageProfile+xml
Name            : sp-local-vmfs-2
AnyAttr         :
VCloudExtension :

 

2. vApp 仮想マシンへのストレージ ポリシー変更

vapp-02 には、複数の仮想マシンが含まれます。

PS C:\> Get-CIVApp -OrgVdc org-vdc-01 -Name vapp-02 | Get-CIVM

Name                           Status                      GuestOSFullName                          CpuCount MemoryGB
----                           ------                      ---------------                          -------- --------
jbox01                         PoweredOff                  VMware Photon OS (64-bit)                1        2.000
vm01                           PoweredOff                  VMware Photon OS (64-bit)                1        2.000
vm02                           PoweredOff                  VMware Photon OS (64-bit)                1        2.000

 

このうち、vm01 を今回の設定変更対象とします。

PS C:\> $vm = Get-CIVApp -OrgVdc org-vdc-01 -Name vapp-02 | Get-CIVM -Name vm01
PS C:\> $vm

Name                           Status                      GuestOSFullName                          CpuCount MemoryGB
----                           ------                      ---------------                          -------- --------
vm01                           PoweredOff                  VMware Photon OS (64-bit)                1        2.000

 

vm01 には、ストレージ ポリシー「sp-local-vmfs」が割り当てられています。

PS C:\> $vm.ExtensionData.StorageProfile

Client          : VMware.VimAutomation.Cloud.Views.CloudClient
Href            : https://lab-vcd-31.vcd.go-lab.jp/api/vdcStorageProfile/1fb2df18-cb35-4190-955f-6475ade9afbd
Id              : urn:vcloud:vdcstorageProfile:1fb2df18-cb35-4190-955f-6475ade9afbd
Type            : application/vnd.vmware.vcloud.vdcStorageProfile+xml
Name            : sp-local-vmfs
AnyAttr         :
VCloudExtension :

 

ストレージポリシーを、sp-local-vmfs-2 に変更します。sp-local-vmfs-2 のオブジェクトを格納しておいた $vdc_storage_profile を設定したうえで、UpdateServerData メソッドで反映させます。

PS C:\> $vm.ExtensionData.StorageProfile = $vdc_storage_profile
PS C:\> $vm.ExtensionData.UpdateServerData()

 

これで、vm01 をあらためて取得しなおすと、ストレージ ポリシーが「sp-local-vmfs-2」に変更されていることが確認できます。

PS C:\> $vm = Get-CIVApp -OrgVdc org-vdc-01 -Name vapp-02 | Get-CIVM -Name vm01
PS C:\> $vm.ExtensionData.StorageProfile

Client          : VMware.VimAutomation.Cloud.Views.CloudClient
Href            : https://lab-vcd-31.vcd.go-lab.jp/api/vdcStorageProfile/29018504-bf94-4d54-9f7f-7aacbab6d3d4
Id              : urn:vcloud:vdcstorageProfile:29018504-bf94-4d54-9f7f-7aacbab6d3d4
Type            : application/vnd.vmware.vcloud.vdcStorageProfile+xml
Name            : sp-local-vmfs-2
AnyAttr         :
VCloudExtension :

 

テナント ポータルでも、少し待ってから Web ブラウザを更新すると vm01 のストレージ ポリシーとして変更後のものが表示されます。

 

3. vApp 単位でのストレージ ポリシー変更の例

vApp に含まれるすべての仮想マシンをまとめて変更する場合は、たとえば下記のようにコマンドを実行します。

$vdc_name = "org-vdc-01"
$vapp_name = "vapp-02"
$storage_profile_name = "sp-local-vmfs-2"

$vdc_storage_profiles = Get-OrgVdc -Name $vdc_name | %{$_.ExtensionData.VdcStorageProfiles.VdcStorageProfile}
$vdc_storage_profile = $vdc_storage_profiles | where {$_.Name -eq $storage_profile_name}

$vapp = Get-CIVApp -OrgVdc $vdc_name -Name $vapp_name
$vapp | Get-CIVM | Sort-Object Name | %{
    $vm = $_
    $vm.ExtensionData.StorageProfile = $vdc_storage_profile
    $vm.ExtensionData.UpdateServerData()
}

 

実際に PowerShell のコンソールで実行すると下記のようになります。

PS C:\> $vdc_name = "org-vdc-01"
PS C:\> $vapp_name = "vapp-02"
PS C:\> $storage_profile_name = "sp-local-vmfs-2"
PS C:\>
PS C:\> $vdc_storage_profiles = Get-OrgVdc -Name $vdc_name | %{$_.ExtensionData.VdcStorageProfiles.VdcStorageProfile}
PS C:\> $vdc_storage_profile = $vdc_storage_profiles | where {$_.Name -eq $storage_profile_name}
PS C:\>
PS C:\> $vapp = Get-CIVApp -OrgVdc $vdc_name -Name $vapp_name
PS C:\> $vapp | Get-CIVM | Sort-Object Name | %{
>>     $vm = $_
>>     $vm.ExtensionData.StorageProfile = $vdc_storage_profile
>>     $vm.ExtensionData.UpdateServerData()
>> }
PS C:\>
PS C:\> Get-CIVApp -OrgVdc org-vdc-01 -Name vapp-02 | Get-CIVM | select Name,{$_.ExtensionData.StorageProfile.Name}

Name   $_.ExtensionData.StorageProfile.Name
----   ------------------------------------
jbox01 sp-local-vmfs-2
vm01   sp-local-vmfs-2
vm02   sp-local-vmfs-2

 

まだつづく。