Skip navigation
2017

突然ですが、vCenter のタスク情報の一覧を PowerCLI で見てみようと思います。

 

vSphere API では、下記のあたりの情報です。

 

Data Object - TaskInfo(vim.TaskInfo)

https://code.vmware.com/apis/196/vsphere#/doc/vim.TaskInfo.html

 

PowerCLI から見る TaskInfo

vSphere Web Client / vSphere Client などで見られる vCenter のタスク情報は、

PowerCLI だと下記のように見ることができます。

 

まず、VM を起動してみます。

PowerCLI> Get-VM vm21 | Start-VM

 

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm21                 PoweredOn  1        0.500

 

 

この VM の直近のタスクを見てみます。

PowerCLI> Get-VM vm21 | select Name,{$_.ExtensionData.RecentTask}

 

Name $_.ExtensionData.RecentTask

---- ---------------------------

vm21 Task-task-17043

 

 

PowerCLI> (Get-View (Get-VM vm21).ExtensionData.RecentTask).Info

 

 

Key           : task-17043

Task          : Task-task-17043

Description   :

Name          : PowerOnVM_Task

DescriptionId : VirtualMachine.powerOn

Entity        : VirtualMachine-vm-500

EntityName    : vm21

Locked        :

State         : success

Cancelled     : False

Cancelable    : False

Error         :

Result        :

Progress      :

Reason        : VMware.Vim.TaskReasonUser

QueueTime     : 2017/09/14 11:31:41

StartTime     : 2017/09/14 11:31:41

CompleteTime  : 2017/09/14 11:31:45

EventChainId  : 702468

ChangeTag     :

ParentTaskKey :

RootTaskKey   :

ActivationId  :

LinkedView    :

 

 

タスクの内容が分かりやすい、DescriptionId だけに絞ってみます。

直近の VM を起動したタスクだとわかります。

PowerCLI> Get-VM vm21 | select Name,{(Get-View $_.ExtensionData.RecentTask).Info.DescriptionId}

 

 

Name (Get-View $_.ExtensionData.RecentTask).Info.DescriptionId

---- ---------------------------------------------------------

vm21 VirtualMachine.powerOn

 

 

PowerCLI で タスク情報の一覧を取得してみる。

今回は、vCenter のタスクにどのようなものがあるのか PowerCLI で一覧を取得してみます。

まず今回使用した PowerCLI と、vCenter のバージョンです。

 

PowerCLI 6.5.1 と、vCenter 6.5 U1 を使用しています。

PowerCLI> (Get-PowerCLIVersion).UserFriendlyVersion

VMware PowerCLI 6.5.1 build 5377412

PowerCLI> Connect-VIServer vc-sv01.go-lab.jp | Out-Null

PowerCLI> $global:DefaultVIServer | fl Name,Version,Build,IsConnected

 

 

Name        : vc-sv01.go-lab.jp

Version     : 6.5.0

Build       : 5973321

IsConnected : True

 

 

TaskManager から、タスク情報を取得してみます。

1500 件以上あるようです。

PowerCLI> $t = Get-View $global:DefaultVIServer.ExtensionData.Content.TaskManager

PowerCLI> ($t.Description.MethodInfo).Count

1578

 

とりあえず 10件だけ取得してみると、下記のような感じです。

PowerCLI> $t.Description.MethodInfo | select -First 10 | fl

 

 

Key     : host.OperationCleanupManager.createEntry

Label   : createEntry

Summary : createEntry

 

Key     : host.OperationCleanupManager.updateEntry

Label   : updateEntry

Summary : updateEntry

 

Key     : host.OperationCleanupManager.queryEntry

Label   : queryEntry

Summary : queryEntry

 

Key     : vm.guest.GuestOperationsManager.queryDisabledMethods

Label   : Query disabled guest operations

Summary : Returns a list of guest operations not supported by a virtual machine

 

Key     : profile.host.HostSpecificationManager.updateHostSpecification

Label   : updateHostSpecification

Summary : updateHostSpecification

 

Key     : profile.host.HostSpecificationManager.updateHostSubSpecification

Label   : updateHostSubSpecification

Summary : updateHostSubSpecification

 

Key     : profile.host.HostSpecificationManager.retrieveHostSpecification

Label   : retrieveHostSpecification

Summary : retrieveHostSpecification

 

Key     : profile.host.HostSpecificationManager.deleteHostSubSpecification

Label   : deleteHostSubSpecification

Summary : deleteHostSubSpecification

 

Key     : profile.host.HostSpecificationManager.deleteHostSpecification

Label   : deleteHostSpecification

Summary : deleteHostSpecification

 

Key     : profile.host.HostSpecificationManager.getUpdatedHosts

Label   : getUpdatedHosts

Summary : getUpdatedHosts

 

 

PowerCLI>

 

最初に確認した VM を起動したタスクについての情報も含まれています。

PowerCLI> $t.Description.MethodInfo | where {$_.key -eq "VirtualMachine.powerOn"} | fl

 

Key     : VirtualMachine.powerOn

Label   : Power On virtual machine

Summary : Power On this virtual machine

 

 

再起動だと、下記のようなタスクです。

PowerCLI> $t.Description.MethodInfo | where {$_.key -eq "VirtualMachine.rebootGuest"} | fl

 

Key     : VirtualMachine.rebootGuest

Label   : Initiate guest OS reboot

Summary : Issues a command to the guest operating system asking it to perform a reboot

 

 

ちなみに、下記のように CSV で出力することもできます。

PowerCLI> $t.Description.MethodInfo | Export-Csv -Encoding utf8 -NoTypeInformation -Path C:\work\vc-task.csv

PowerCLI> cat C:\work\vc-task.csv | select -First 10

"Key","Label","Summary"

"host.OperationCleanupManager.createEntry","createEntry","createEntry"

"host.OperationCleanupManager.updateEntry","updateEntry","updateEntry"

"host.OperationCleanupManager.queryEntry","queryEntry","queryEntry"

"vm.guest.GuestOperationsManager.queryDisabledMethods","Query disabled guest operations","Returns a list of guest operations not supported by a virtual machine"

"profile.host.HostSpecificationManager.updateHostSpecification","updateHostSpecification","updateHostSpecification"

"profile.host.HostSpecificationManager.updateHostSubSpecification","updateHostSubSpecification","updateHostSubSpecification"

"profile.host.HostSpecificationManager.retrieveHostSpecification","retrieveHostSpecification","retrieveHostSpecification"

"profile.host.HostSpecificationManager.deleteHostSubSpecification","deleteHostSubSpecification","deleteHostSubSpecification"

"profile.host.HostSpecificationManager.deleteHostSpecification","deleteHostSpecification","deleteHostSpecification"

PowerCLI>

 

取得した CSV ファイルは下記のような感じでした。

vc-task.csv · GitHub

 

以上、PowerCLI で TaskInfo の一覧を取得してみる話でした。

VMware Photon OS はコンテナむけの軽量 OS として提供されているので、

デフォルトでインストールされるパッケージも最小限にされています。

そのため、当然ながら他のディストリビューションで普段利用しているコマンドが

インストールされていなかったりすることもあります。

 

たとえば、Photon OS 1.0 の OVA (Build は 62c543d)をデプロイしてみると、

diff コマンドがインストールされていなかったりします。

root@photon-NaoOL4Nm6 [ ~ ]# cat /etc/photon-release

VMware Photon Linux 1.0

PHOTON_BUILD_NUMBER=62c543d

root@photon-NaoOL4Nm6 [ ~ ]# diff

-bash: diff: command not found

root@photon-NaoOL4Nm6 [ ~ ]# which diff

which: no diff in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin)

 

デフォルトの RPM 構成は今後のアップデートでも、また変わったりするのではないかと思います。

そこで今回は Photon OS への RPM 追加についての話です。

 

Photon OS では、Yum リポジトリで RPM が提供されていれば、

tdnf コマンドでインストールすることができます。

ただし、標準では yum コマンドではなく tdnf コマンドを利用します。

yum コマンドは、デフォルトではインストールされていません。

root@photon-NaoOL4Nm6 [ ~ ]# yum

-bash: yum: command not found

 

tdnf では yum コマンドと同様のオプションが使用できるようになっています。

たとえば、下記のように「diff」がインストールされていそうな RPM を探したりできます。

例では、Photon でも diffutils が提供されていることが分かります。

そしてインストールすると、diff コマンドが利用可能になります。

root@photon-NaoOL4Nm6 [ ~ ]# tdnf search diff

diffutils : Programs that show the differences between files or directories

root@photon-NaoOL4Nm6 [ ~ ]# tdnf install -y diffutils

 

Installing:

diffutils                       x86_64      3.3-3.ph1           862.60 k

 

Total installed size: 862.60 k

 

Downloading:

diffutils                               319216    100%

Testing transaction

Running transaction

 

Complete!

root@photon-NaoOL4Nm6 [ ~ ]# which diff

/usr/bin/diff

 

ちなみに、yum を tdnf でインストールすることもできます。

root@photon-NaoOL4Nm6 [ ~ ]# tdnf install -y yum

 

Installing:

rpm-devel                       x86_64      4.11.2-11.ph1       389.27 k

libxml2                         x86_64      2.9.4-3.ph1           7.27 M

pycurl                          x86_64      7.21.5-3.ph1        143.50 k

yum-metadata-parser             x86_64      1.1.4-2.ph1          57.10 k

urlgrabber                      noarch      3.10.1-2.ph1        505.29 k

yum                             noarch      3.4.3-6.ph1           4.18 M

 

Total installed size: 12.52 M

 

Downloading:

yum                                    1359795    100%

urlgrabber                              150199    100%

yum-metadata-parser                      24490    100%

pycurl                                   52877    100%

libxml2                                1548443    100%

rpm-devel                               117961    100%

Testing transaction

Running transaction

 

Complete!

root@photon-NaoOL4Nm6 [ ~ ]#

 

yum コマンドが利用できるようになりました。

root@photon-NaoOL4Nm6 [ ~ ]# yum repolist

Failed to set locale, defaulting to C

lightwave                                                   | 1.3 kB  00:00

lightwave/primary                                           |  13 kB  00:00

lightwave                                                                 68/68

photon                                                      | 1.3 kB  00:00

photon/primary                                              | 202 kB  00:00

photon                                                                  537/537

photon-extras                                               | 1.3 kB  00:00

photon-extras/primary                                       | 6.8 kB  00:00

photon-extras                                                             29/29

photon-updates                                              | 1.3 kB  00:00

photon-updates/primary                                      | 490 kB  00:00

photon-updates                                                        1421/1421

repo id                  repo name                                        status

lightwave                VMware Lightwave 1.0(x86_64)                       68

photon                   VMware Photon Linux 1.0(x86_64)                   537

photon-extras            VMware Photon Extras 1.0(x86_64)                   29

photon-updates           VMware Photon Linux 1.0(x86_64)Updates           1421

repolist: 2055

root@photon-NaoOL4Nm6 [ ~ ]#

 

ただ、デフォルトでは tdnf コマンドを利用するようになっていて、

Photon 以外の Linux ディストリビューションでもYUM 以外の

パッケージマネージャ(Fedra では DNF とか)を採用しているようなので、

個人的には可能な限り yum よりも tdnf を利用しておくとよいかなと思っています。

 

以上、Photon のパッケージ管理についての話でした。