Skip navigation
2014

今回は、vCenter Operations Manager (VCOPS)のカスタム UI を編集してみようと思います。

ちなみに、VCOPS 5.8 を使用しています。

 

手順の概要。

  • UI VM でテキストファイルを配置するディレクトリを指定します。
  • UI VM に、カスタムUI に表示するテキストファイルを作成しておきます。
  • VCOPS の カスタム UI で、「テキスト」ウィジェットを追加します。

 

(参考) ※VCOPS 5.7.1 のドキュメントですが・・・

VMware vCenter Operations Manager のスタート ガイド

Custom ユーザー インターフェイス

vCenter Operations Manager 5.7.1

テキスト ウィジェットを構成する(P.103 あたり)

http://www.vmware.com/files/jp/pdf/vcops-571-custom-ui-getting-started-guide_ja.pdf

 

UI VM での準備

 

ここでは、UI VM で設定ファイル編集をしたあとに、カスタム UI の Tomcat を再起動します。

 

1. まず、設定ファイルを編集します。

 

/usr/lib/vmware-vcops/user/conf/web/web.properties

を編集し、textDisplay_root にテキストファイル配置ディレクトリを指定します。

デフォルトだと、ディレクトリは指定されていません。

firstvm-external:~ # grep -n textDisplay_root /usr/lib/vmware-vcops/user/conf/web/web.properties

10:#textDisplay_root The root folder for the text display widget

11:textDisplay_root=

 

今回は、/opt/vcops_text ディレクトリを指定しました。

firstvm-external:~ # vi /usr/lib/vmware-vcops/user/conf/web/web.properties

firstvm-external:~ # grep -n textDisplay_root /usr/lib/vmware-vcops/user/conf/web/web.properties

10:#textDisplay_root The root folder for the text display widget

11:textDisplay_root=/opt/vcops_text

 

2. 前の手順で指定したディレクトリを作成します。

 

VCOPS は admin ユーザで起動しているようなので、

作成したディレクトリは、所有者を admin ユーザにしておきます。

firstvm-external:~ # mkdir /opt/vcops_text

firstvm-external:~ # echo "赤いバッジに要注意!" > /opt/vcops_text/msg.txt

firstvm-external:~ # chown -R admin:admin /opt/vcops_text

 

ディレクトリ、ファイルの所有者が admin ユーザになったことを確認しておきます。

firstvm-external:~ # ls -ld /opt/vcops_text

drwx------ 2 admin admin 4096 Mar 31 02:06 /opt/vcops_text

firstvm-external:~ # ls -l /opt/vcops_text/

total 4

-rw------- 1 admin admin 31 Mar 31 02:06 msg.txt

 

3. Custom UI の Tomcat を再起動します。

firstvm-external:~ # service vcopswebenterprise restart

Stopping vcopsEnterpriseService...

Waiting for vcopsEnterpriseService to exit...

Stopped vcopsEnterpriseService.

Starting vcopsEnterpriseService...

Waiting for the service to come up...

Waiting for the service to come up...

Waiting for the service to come up...

firstvm-external:~ #

 

カスタム UI でのウィジェット追加

 

4. Web ブラウザから VCOPS のカスタム UI にアクセスします。

vcops-msg01.png

 

5. タブを新規作成します。

 

デフォルトのタブは見本として残しておきたいので、新規タブを作成します。

ゼロから新しいタブを作るのは大変なので、今回はデフォルトで作成される

Troubleshooting タブをクローンして、test-tab というタブを作成しました。

vcops-msg02.png

 

6. タブを編集します。


新しく作成されたタブを選択して、「編集」をクリックします。

vcops-msg03.png

 

7. ウィジェットを追加します。

 

いろいろなウィジェットを、タブに追加することができますが、

今回は「テキスト」ウィジェットを追加します。

右画面にドラック&ドロップして、「OK」をクリックします。

vcops-msg04.png

 

タブの下の方に、「テキスト」ウィジェットが追加されています。

vcops-msg05.png

 

8. ウィジェットを編集します。

 

タブのウィジェットは、タイトルバーのあたりをドラック&ドロップすると、

配置を変更することができます。

今回は「テキスト」ウィジェットを画面の上の方に持ってきました。

メッセージ表示するため、「ウィジェットの編集」ボタンをクリックします。

vcops-msg06.png

 

今回はテキストファイルの内容を表示するので、

「File」のところにある「Browse」ボタンをクリックしてテキストファイルを指定します。

vcops-msg07.png

 

以前の手順で UI VM に作成したテキストファイルが表示されるので選択します。

ここでテキストファイルが表示されない場合は、以前に実施した

UI VM 上での設定(ディレクトリ指定や権限設定など)を再確認します。

vcops-msg08.png

 

メッセージが表示されました。

そして、このウィジェットのサイズは、矢印のボタンで変更することができます。

vcops-msg09.png

 

VCOPS は他の運用ツールと雰囲気が違うので、

うまくテキスト メッセージで説明文を表示しておけば、

運用担当者が受け入れやすくなったりするかもしれません。

 

今回は ただテキスト表示しただけですが、

アイデアしだいで無限の可能性が・・・

 

以上、VCOPS のカスタム UI を編集してみる話でした。

vCenter Operations Manager (VCOPS)の UI を眺めているとき、

あまり操作していないとタイムアウトして

再ログインしなくてはいけないことがあります。

 

ゆっくり VCOPS の画面を見ていたいので、

下記の KB を参考に、タイムアウトを無効にしてみました。

Changing or disabling the UI session timeout for vCenter Operations Manager vApp (2015135)

http://kb.vmware.com/kb/2015135

 

VCOPS の UI について

 

VCOPS には、Web UI が3つあり、

それぞれの画面には、Webブラウザから別の URL を指定することでアクセスできます。

今回は、vSphere UI のタイムアウトを無効にしてみます。

 

1. Administration Web アプリケーション

 

UI の URL →https://UI-VM のアドレス/admin/

 

VCOPSの初期セットアップなどで使用する画面です。

ドキュメントなどでは、「メイン アプリケーション」「admin page」と呼ばれたりもしています。

一度 VCOPS のセットアップが済んだら、そんなに開くことはないと思います。

 

ログイン画面

vcops-ui-00.png

 

ログインすると下記のような画面です。

vCenter などの仮想アプライアンスと似た感じの設定画面です。

vcops-ui-01.png

 

2. vSphere Web アプリケーション(vSphere UI または Standard UI)

 

UI の URL →https://UI-VM のアドレス/vcops-vsphere/

 

VCOPS で一番有名な画面ではないかと思います。

vSphere Client からも表示できる画面です。

 

ログイン画面

vcops-ui-02.png

 

ログインすると、よく VCOPS の紹介で見る画面になります。

vcops-ui-03.png

 

3. Enterprise Web アプリケーション(Custom UI)

 

UI の URL →https://UI-VM のアドレス/vcops-custom/

 

上位エディション(vCenter Operations Management Suite の Advanced 以上)

から使用できる画面で、いろいろ作りこみができます。

 

ログイン画面

vSphere UI とほとんど同じ画面ですが、よく見ると「カスタム UI」と表示されています。

vcops-ui-04.png

 

ログインすると、下記のような画面になります。

タブを追加/削除したり、様々なウィジェット(グラフなど)をならべたり、

色々なことができます。

vcops-ui-05.png

 

VCOPS のタイムアウト無効化

 

VCOPS の UI の実体は、UI VM で起動している Tomcat Server なので

その UI に対応したアプリケーションの web.xml を編集して、

tomcat インスタンスを再起動します。

 

1. UI VM にログインします。

 

SSH(TaraTermなど)で UI VM にログインします。

デフォルト状態であれば、root ユーザでログインできるはずです。

 

まず、設定編集するファイルを確認します。

※デフォルトのタイムアウト設定は 30秒 です。(例だと 215行目のところ)

firstvm-external:~ # grep session-timeout -C2 -n /usr/lib/vmware-vcops/tomcat/webapps/vcops-vsphere/WEB-INF/web.xml

213-   <!-- Session timeout is measured in minutes. Use '-1' to have infinite session. -->

214-   <session-config>

215:      <session-timeout>30</session-timeout>

216-   </session-config>

217-

 

2. web.xml ファイルを編集して、タイムアウトを変更します。

 

デフォルトだと30分だったところを、無期限(-1)にします。

firstvm-external:~ # vi /usr/lib/vmware-vcops/tomcat/webapps/vcops-vsphere/WEB-INF/web.xml

firstvm-external:~ # grep session-timeout -C2 -n /usr/lib/vmware-vcops/tomcat/webapps/vcops-vsphere/WEB-INF/web.xml

213-   <!-- Session timeout is measured in minutes. Use '-1' to have infinite session. -->

214-   <session-config>

215:      <session-timeout>-1</session-timeout>

216-   </session-config>

217-

 

3. vSphere UI のサービスを再起動します。

 

vcopsweb を再起動します。

service vcopsweb restart でもいけますが、

KB にしたがって、/etc/init.d/vcopsweb restart します。

firstvm-external:~ # /etc/init.d/vcopsweb restart

Stopping vcopsService...

Waiting for vcopsService to exit...

Waiting for vcopsService to exit...

Waiting for vcopsService to exit...

Stopped vcopsService.

Starting vcopsService...

Waiting for the service to come up...

Waiting for the service to come up...

Waiting for the service to come up...

firstvm-external:~ #

 

これで、ちょくちょく UI にログインしなおさなくて済むようになります。

 

ちなみに、カスタム UI のタイムアウトを変更したいときは、

/usr/lib/vmware-vcops/tomcat-enterprise/webapps/vcops-custom/WEB-INF/web.xml

を同様に編集して、

/etc/init.d/vcopswebenterprise restart

します。

 

 

★VCOPS 5.x の後継バージョンである VROPS 6.x の場合はこちらをどうぞ。

VROPS 6.x の UI タイムアウト時間を変更する。

 

 

以上、VCOPS の UI のタイムアウト変更でした。

vCenter 5.5 からは、

デフォルトで「administrator@vsphere.local」という

管理ユーザアカウントが用意されています。

※vCenter 5.1 にいた 「admin@System-Domain」は 5.5 では使用されないようです。

 

このアカウントは、Windows 版 vCenter でも、

仮想アプライアンスの SUSE Linux 版の vCenter でも存在します。

が、せっかくなので Active Directory(AD)認証できるようにしてみようと思います。

今回は、

vCenter Server Appliance(VCSA) 5.5 に AD 認証設定してみます。

 

0. VCSA のデプロイ

 

まず、VCSA の OVF ファイルをデプロイして vCenter を起動できるようにしておきます。

すでに administrator@vsphere.local ユーザではログイン出来ることを想定しています。

※デプロイ手順については、今回は省略します・・・

vcsa55-ad00.png

 

1. 最初に、VCSA を AD 参加させます。

 

VCSA の管理画面(https://VCSAのアドレス:5480/)にログインします。

vcsa55-ad01-1.png

 

「vCenter Server」→「Authentication」タブを開いて、

「Active Directory Enabled」のチェックをオンにします。

「Domain」、「Administrator user」、「Administrator password」

をそれぞれ入力して「Save Settings」で設定を保存します。

※今回の例では、「vmad.local」という AD ドメインに参加させます。

vcsa55-ad01-2.png

 

2. ここで 一度 VCSA を再起動します。

 

AD の設定反映のために、VCSA の仮想マシンを再起動します。

SSO サービスの再起動が必要なようですが、

VCSA ごと再起動したほうが簡単なので・・・

 

ここで再起動しない場合、

後の手順で Web Client から AD ドメインが認識できなかったりします。

 

 

3. Web Client で、SSO の構成画面を開く。

 

VCSA が起動したら、Web Client に administrator@vsphere.local でログインします。

ログインしたら、ホームの「管理」をクリックします。

vcsa55-ad03-1.png

 

「構成」→「アイデンティティ ソース」を開きます。

vcsa55-ad03-2.png

 

4. ID ソース「WORKGROUP」を削除。

 

すでに IDソースとして「WORKGROUP」が登録されているのですが、

これは削除してしまいます。

これが残っていると AD ドメインを IDソースに追加するときにエラーとなります。

vcsa55-ad04.png

 

5. SSO の ID ソースとして AD ドメインを追加。

 

「+」ボタンをクリックし、ID ソース追加画面を開きます。

vcsa55-ad05-1.png

 

そして下記を指定します。

  • アイデンティティ ソースのタイプ
    →「Active Direcotry(統合 Windows 認証)」を選択。
  • ドメイン名 → 自動的に入力されます。
    ※既に VCSA を vmad.local ドメインに参加させています。
  • 「SPN を使用」を選択します。
  • サービス プリンシパル名(SPN)
    → 「!」をクリックしたときの例にならって、「STS/ドメイン名」と入力しています。
    ※ちなみにSTSは、「セキュリティ トークン サービス」 のようです・・・

vCenter Single Sign-On によって環境を保護する方法

http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.vsphere.security.doc/GUID-575991A7-7FF3-4F79-B962-CC5540A9CE18.html

 

  • 「ユーザー プリンシパル名(UPN)」 と 「パスワード」
    →今回は、AD ドメインの Administrator を入力しています。

vcsa55-ad05-2.png

 

AD ドメインが SSO の ID ソースとして登録されたことが確認できます。

vcsa55-ad05-3.png

 

6. AD アカウントへの vCenter の権限付与

 

ここまでの手順で AD アカウントでもログインできるようになりますが

まだ vCenter で管理しているオブジェクトに対しての権限がなにもないので、

AD ユーザ(グループ)に vCenter のロールを付与することで権限付与します。

 

Web Client の ホーム画面から下記の vCenter の管理画面を開き、

「管理」→「権限」を開きます。

この画面で「+」ボタンをクリックして権限追加します。

vcsa55-ad06-1.png

 

「追加」ボタンで、AD ユーザ(もしくはグループ)を追加し、

vCenter のロール(例では「システム管理者」)を割り当てます。

基本的には AD ユーザではなく、AD グループに対して ロールを割り当てたほうが

権限管理しやすいと思います。

vcsa55-ad06-2.png

 

詳しい手順は下記を参考にしてください・・・

vCenter 5.1 入門 その4 (ADユーザ認証について)

※5.1 についてのポストですが、ここの手順は同様です。

※AD グループ、AD ユーザはこのポストと同じのものを使用しています。

vcsa55-ad06-3.png

 

AD のアカウントが登録されました。

vcsa55-ad06-4.png

 

7. Web Client から AD ユーザでログインしてみる。

 

AD ユーザで Web Client にログインしてみます。

vcsa55-ad07-1.png

 

ログインするとインベントリオブジェクトが見えます。

vcsa55-ad07-2.png

 

ちなみに、vCenter でロール(権限)付与していない場合は

ログインできても何も見えなくなります。(ゼロ件になります)

vcsa55-ad07-3.png

 

ちなみに、vSphere 環境の認証は、

vCenter 5.1 からこんな感じになっています。

今回の AD 認証は、イメージ図の「SSO 認証」の部分でされています。

vCenter 5.1 入門 その5 (vSphere 5.1 環境のユーザ認証イメージ)

 

最後に・・・

認証系は失敗するとつらいので、

十分に検証してから本番に挑んでほしいと思います・・・

 

以上、VCSA 5.5 の AD 認証設定でした。

PowerCLI でコマンドを実行するときには

あらかじめ Connect-VIServer コマンドレットで vCenter(もしくは ESXi)に接続します。

PowerCLI> Connect-VIServer vcenter55-2.vmad.local

※「-User」と「-Password」でユーザ/パスワードを指定することもできますが省略しています。

 

この Connect-VIServer を複数回実行するか、

もしくは vCenter のアドレスを「,」で区切って複数指定することで、

複数のサーバ(vCenter / ESXi) に同時接続してコマンド実行することが可能です。

※どちらの方法も、ユーザ/パスワードはサーバごとに入力することになります。

 

Connect-VIServer を複数回実行するコマンドライン例

vcenter55-2.vmad.local と vcenter51u1-2.vmad.local が接続先 vCenter のアドレスです。

PowerCLI> Connect-VIServer vcenter55-2.vmad.local

PowerCLI> Connect-VIServer vcenter51u1-2.vmad.local


接続先サーバを複数指定するコマンドライン例

※「-Server」は省略可のですが、わかりやすくするために付けてみました。

PowerCLI> Connect-VIServer -Server vcenter55-2.vmad.local,vcenter51u1-2.vmad.local

 

ちょっと強引なコマンドラインですが、

下記のような感じで、複数の vCenter に接続できたことが確認できます。

PowerCLI> Get-Datacenter | select @{N="VIServer";E={$_.Uid -replace ".*@|:443.*",""}} -Unique

 

VIServer

--------

vcenter55-2.vmad.local

vcenter51u1-2.vmad.local

 

PowerCLI の設定確認方法

 

複数サーバへの接続を許可するかどうかは、

PowerCLIの Connect-VIServer で初めて複数サーバに接続した時に質問されます。

下記の質問に 「Y」 を入力すると、複数サーバ接続ができるようになります。

powercli-Multiple-msg.png

PowerCLI C:\> Connect-VIServer vcenter55-2.vmad.local

 

 

Working with multiple default servers?

 

 

    Select [Y] if you want to work with more than one default servers. In this

case, every time when you connect to a different server using Connect-VIServer,

the new server connection is stored in an array variable together with the

previously connected servers. When you run a cmdlet and the target servers

cannot be determined from the specified parameters, the cmdlet runs against all

servers stored in the array variable.

    Select [N] if you want to work with a single default server. In this case,

when you run a cmdlet and the target servers cannot be determined from the

specified parameters, the cmdlet runs against the last connected server.

 

 

    WARNING: WORKING WITH MULTIPLE DEFAULT SERVERS WILL BE ENABLED BY DEFAULT

IN A FUTURE RELEASE. You can explicitly set your own preference at any time by

using the DefaultServerMode parameter of Set-PowerCLIConfiguration.

 

 

[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y

 

下記のように PowerCLI の設定を確認することで

複数サーバへ接続可能なモードかどうかを確認できます。

 

DefaultVIServerMode が「Multiple」となっていれば、複数サーバへ接続可能な状態です。

powercli-Multiple.png

ちょっと見にくいですが、下記のように表示されます。

PowerCLI> Get-PowerCLIConfiguration

 

Scope    ProxyPolicy     DefaultVIServerMode InvalidCertificateAction  DisplayDeprecationWarnings WebOperationTimeout

                                                                                                  Seconds

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

Session  UseSystemProxy  Multiple            Unset                     True                       300

User                     Multiple

AllUsers

 

ちなみに、

この DefaultVIServerMode が Single になっていると、

複数台のvCenterに接続しようとしても、最後に接続したサーバのセッションだけが

有効になってしまいます。

 

DefaultVIServerMode = Multiple の設定方法

 

何らかの事情で

DefaultVIServerMode が Single になっている場合は、

下記のコマンドで Multiple(複数サーバへ接続可能なモード)に変更できます。

PowerCLI> Get-PowerCLIConfiguration

 

Scope    ProxyPolicy     DefaultVIServerMode InvalidCertificateAction  DisplayDeprecationWarnings WebOperationTimeout

                                                                                                  Seconds

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

Session  UseSystemProxy  Single              Unset                     True                       300

User                     Single

AllUsers

 

 

PowerCLI> Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Scope User -Confirm:$false

 

Scope    ProxyPolicy     DefaultVIServerMode InvalidCertificateAction  DisplayDeprecationWarnings WebOperationTimeout

                                                                                                  Seconds

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

Session  UseSystemProxy  Multiple            Unset                     True                       300

User                     Multiple

AllUsers

 

vCenter だけでなく、vCenter 管理されていない 無償版 ESXi へも複数接続できるので

PowerCLI でまとめて情報取得したい時などに同時接続すると便利だと思います。

 

以上、PowerCLI から複数台の vCenter に接続してみる話でした。

PowerCLI コマンドで ESXi の設定確認・変更をしたいときに、

esxcli コマンドならできるのに PowerCLI ではコマンドレットが見つからないことがあります。

その場合、Get-EsxCli コマンドレットから esxcli を実行することができます。

 

実行例

 

例として、hv55n1.vmad.local という ESXi に対して Get-EsxCli を実行してみます。

※あらかじめ Connect-VIServer で vCenter もしくは ESXi に接続しておきます。

PowerCLI> Get-VMHost hv55n1* | select Name

 

Name

----

hv55n1.vmad.local ★このESXi に esxcli 実行します。


PowerCLI> Get-VMHost hv55n1* | Get-EsxCli

=========================

EsxCli: hv55n1.vmad.local

 

   Elements:

   --------- ★実行できるコマンドの一覧が表示されます。

   device

   esxcli

   fcoe

   graphics

   hardware

   iscsi

   network

   sched

   software

   storage

   system

   vm

   vsan

 

ためしに、

2通りの書き方で esxcli から ESXi の時間を確認してみます。

同時に実行したわけではないので表示される時間は異なりますが、

書き方が違っても同様の結果が得られます。

 

(例1)

PowerCLI> $e = Get-VMHost hv55n1* | Get-EsxCli

PowerCLI> $e.system.time.get()

2014-03-15T14:45:56Z

(例2)

PowerCLI> Get-VMHost hv55n1* | % {($_ | Get-EsxCli).system.time.get()}

2014-03-15T14:45:59Z


個人的な感覚としては、上記の 例1 の書き方の方が一般的な気がします。

一方、ワンライナーが好きだったり、

esxcli を複数の ESXi に実行したかったりという場合は、

例2 のような書き方の方がコマンドラインを組み立てやすいと思います。


ちなみに、例2 のコマンドライン中の「%」は、

PowerShell では ForEach-Object の別名を表します。

「%」 の代わりに、「ForEach-Object」や「foreach」で置き換えられます。

PS> Get-Alias %,foreach | ft -AutoSize

 

 

CommandType Name    Definition

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

Alias       %       ForEach-Object

Alias       foreach ForEach-Object

 

esxcli を複数の ESXi に実行したい場合は、

例2 を応用して、下記のような情報取得もできます。

PowerCLI> Get-VMHost hv55n* | select Name,{($_ | Get-EsxCli).system.time.get()} | ft -AutoSize

 

Name              ($_ | Get-EsxCli).system.time.get()

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

hv55n1.vmad.local 2014-03-15T15:15:23Z

hv55n2.vmad.local 2014-03-15T15:15:26Z

hv55n3.vmad.local 2014-03-15T15:15:24Z

hv55n4.vmad.local 2014-03-15T15:15:25Z

 

同様のことを ESXi のコンソールで実行した場合は下記のようになります。

esxcli ではスペース区切りだったところが、Get-EsxCli だと ドット( . ) 区切りになります。

また、コマンドラインの最後の単語(メソッドに相当する)は、Get-EsxCli では「()」が付きます。

※今回であれば、esxcli の「get」が、Get-EsxCli だと「get()」 になります。

~ # vmware -vl

VMware ESXi 5.5.0 build-1331820

VMware ESXi 5.5.0 GA

~ # esxcli system time get

2014-03-15T15:15:32Z

 

Get-EsxCli での esxcli 使用方法の調査について

 

esxcli と同様に、コマンドラインを途中の単語まで入力して実行することで、

サブコマンドの有無や、必要な引数についての情報がわかります。

ただ、esxcli をコンソールで実行した時のヘルプよりは読みにくいかもしれません。

PowerCLI> $e.system.time

 

===================

EsxCliElement: time

 

   Methods:

   --------

   string get()

   boolean set(long day, long hour, long min, long month, long sec, long year)

 

PowerCLI> $e.system.time.set

 

TypeNameOfValue     : VMware.VimAutomation.ViCore.Util10Ps.EsxCliExtensionMethod

OverloadDefinitions : {boolean set(long day, long hour, long min, long month, long sec, long year)}

MemberType          : CodeMethod

Value               : boolean set(long day, long hour, long min, long month, long sec, long year)

Name                : set

IsInstance          : True

 

ためしに、上記を参考にして ESXi の時刻設定を変更してみました。

ただしコマンドの反映時間に数秒かかることがあるので、

厳密な時間設定にはあまり向かないかもしれません。

※実作業で時間を合わせる場合は これとは別に NTP サーバを参照させるはず・・・

PowerCLI> $e = Get-VMHost hv55n1* | Get-EsxCli

PowerCLI> $e.system.time.get()

2014-03-15T14:56:45Z

PowerCLI> $e.system.time.set(14,10,15,3,0,2014)

true

PowerCLI> $e.system.time.get()

2014-03-14T10:15:04Z ★時刻が変更された。

 

現在の最新 PowerCLI は、PowerCLI 5.5 R2 です。

VMware vSphere PowerCLI 5.5 Release 2 Release Notes

https://www.vmware.com/support/developer/PowerCLI/PowerCLI55R2/powercli55r2-releasenotes.html

 

リリースノートからもわかるように、PowerCLI はバージョンアップするたびに

できることが増えているため、Get-EsxCli を使う機会は

今後、減っていくのではないかと思います。

 

ただ、「普段 PowerCLI スクリプトを実行しているWindows から

どうしても esxcli を実行したくなった」といった場合には、

Get-EsxCli を使用すれば vSphere CLI (esxcli.exe が含まれる)を

追加インストールしなくても済みそうです。

 

以上、PowerCLI から esxcli を実行する方法についてでした。

ESXi の管理コマンドの esxcli には、esxcli というサブコマンドがあります。

「esxcli」 が2回連続しますが、間違いではありません・・・

~ # esxcli esxcli

Usage: esxcli esxcli {cmd} [cmd options]

 

Available Namespaces:

  command               Operations to get information about commands.

 

~ # esxcli esxcli command

Usage: esxcli esxcli command {cmd} [cmd options]

 

Available Commands:

  list                  This command will list all of the esxcli commands with their

                        namespace, object, command name and description.

 

実行すると、下記のような感じで、

esxcli でどのようなコマンドが実行できるのかがわかります。

~ # esxcli esxcli command list | head

Namespace                                               Command

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

esxcli.command                                          list

fcoe.adapter                                            list

fcoe.nic                                                disable

fcoe.nic                                                discover

fcoe.nic                                                list

hardware.bootdevice                                     list

hardware.clock                                          get

hardware.clock                                          set

 

手元にリファレンスがない場合には、

このポストの冒頭のような感じで esxcli コマンドを

途中のフレーズまで実行してコマンドを探すこともできますが、

「esxcli esxcli command list」の結果を grep することで

コマンドを探す手掛かりにすることもできます。

覚えておくと、どこにもつながらないデータセンタとかで

コマンドを忘れてしまったときなどに、活路を見いだせるかもしれません。

 

たとえば、「VIB をアップデートするコマンドを思い出せない」

といった場合は、下記のような感じでヒントを探せます。

出力結果から、「esxcli software vib update ~」

で何とかなりそうなことが思い出せます。

~ # esxcli esxcli command list | grep update

software.profile                                        update

software.vib                                            update

 

esxcli コマンドでできることは、徐々に増えているようです。

 

たとえば、まず ESXi 5.1 U1 にてコマンドの一覧をファイルに保存して、

# vmware -vl

VMware ESXi 5.1.0 build-1065491

VMware ESXi 5.1.0 Update 1

# esxcli esxcli command list | sort > esxi51u1.txt

 

そして、ESXi 5.1 U2 でもコマンドの一覧も取得します。

# vmware -vl

VMware ESXi 5.1.0 build-1483097

VMware ESXi 5.1.0 Update 2

# esxcli esxcli command list | sort > esxi51u2.txt

 

それぞれのファイルを Linux にもってきて diff で比較してみると、

微妙にコマンドが増えています。

※ESXi の diff だとみにくかったので、Linux で diff しています。

[root@linux01 ~]# diff esxi51u1.txt esxi51u2.txt

18a19

> hardware.ipmi.sel                                       clear

236a238,239

> storage.nfs.param                                       get

> storage.nfs.param                                       set

 

さらに、ESXi 5.5 の esxcli も比較してみます。

# vmware -vl

VMware ESXi 5.5.0 build-1331820

VMware ESXi 5.5.0 GA

# esxcli esxcli command list | sort > esxi55.txt

 

これも Linux にもってきて diff で比較してみると、

esxcli が ESXi 5.5 ~の新機能にもちゃんと対応していることがわかります。

たとえば VSAN 系のコマンドも追加されていたりします。

中には、「network.vswitch.dvs.vmware.lacp ~」のように

より esxcli らしく構文が修正されているものもあるようです。

※これも、ESXi だとみにくかったので、Linux で diff しています。

 

ちょっと長いですが・・・

[root@linux01 ~]# diff -b esxi51u2.txt esxi55.txt

1c1

< ------------------------------------------------------  -----------

---

> ------------------------------------------------------  ------------

2a3,4

> device.alias                                            get

> device.alias                                            list

7a10,11

> graphics.device                                         list

> graphics.vm                                             list

19d22

< hardware.ipmi.sel                                       clear

118a122,127

> network.ip.neighbor                                     remove

> network.ip.netstack                                     add

> network.ip.netstack                                     get

> network.ip.netstack                                     list

> network.ip.netstack                                     remove

> network.ip.netstack                                     set

129a139,149

> network.nic.coalesce                                    get

> network.nic.coalesce                                    set

> network.nic.cso                                         get

> network.nic.cso                                         set

> network.nic.eeprom                                      change

> network.nic.eeprom                                      dump

> network.nic.negotiate                                   restart

> network.nic.register                                    dump

> network.nic.selftest                                    run

> network.nic.sg                                          get

> network.nic.sg                                          set

130a151,152

> network.nic.tso                                         get

> network.nic.tso                                         set

136a159

> network.sriovnic.vf                                     stats

140,142c163,167

< network.vswitch.dvs.vmware.lacp.get                     config

< network.vswitch.dvs.vmware.lacp.get                     stats

< network.vswitch.dvs.vmware.lacp.get                     status

---

> network.vswitch.dvs.vmware.lacp.config                  get

> network.vswitch.dvs.vmware.lacp.stats                   get

> network.vswitch.dvs.vmware.lacp.status                  get

> network.vswitch.dvs.vmware.lacp.timeout                 set

> network.vswitch.dvs.vmware.vxlan                        get

147,148c172,176

< network.vswitch.dvs.vmware.vxlan.network.mapping        list

< network.vswitch.dvs.vmware.vxlan.network.mapping        reset

---

> network.vswitch.dvs.vmware.vxlan.network.arp            list

> network.vswitch.dvs.vmware.vxlan.network.arp            reset

> network.vswitch.dvs.vmware.vxlan.network.mac            list

> network.vswitch.dvs.vmware.vxlan.network.mac            reset

> network.vswitch.dvs.vmware.vxlan.network.mtep           list

181a210

> sched.reliablemem                                       get

273a303,311

> storage.vflash.cache                                    get

> storage.vflash.cache                                    list

> storage.vflash.cache.stats                              get

> storage.vflash.cache.stats                              reset

> storage.vflash.device                                   list

> storage.vflash.module                                   get

> storage.vflash.module                                   list

> storage.vflash.module.stats                             get

> storage.vmfs                                            unmap

280a319,323

> system.coredump.file                                    add

> system.coredump.file                                    get

> system.coredump.file                                    list

> system.coredump.file                                    remove

> system.coredump.file                                    set

301a345,347

> system.security.certificatestore                        add

> system.security.certificatestore                        list

> system.security.certificatestore                        remove

334a381,403

> vsan.cluster                                            get

> vsan.cluster                                            join

> vsan.cluster                                            leave

> vsan.cluster                                            restore

> vsan.datastore.name                                     get

> vsan.datastore.name                                     set

> vsan.maintenancemode                                    cancel

> vsan.network                                            clear

> vsan.network                                            list

> vsan.network                                            remove

> vsan.network                                            restore

> vsan.network.ipv4                                       add

> vsan.network.ipv4                                       remove

> vsan.network.ipv4                                       set

> vsan.policy                                             cleardefault

> vsan.policy                                             getdefault

> vsan.policy                                             setdefault

> vsan.storage                                            add

> vsan.storage                                            list

> vsan.storage                                            remove

> vsan.storage.automode                                   get

> vsan.storage.automode                                   set

> vsan.trace                                              set

 

ちなみに、ESXi 5.5 で増えた esxcli コマンドは、

具体的には下記で説明されています。

 

vSphere Command-Line Interface 5.5 Release Notes

https://www.vmware.com/support/developer/vcli/vcli55/vsp5_55_vcli_relnotes.html

 

ESXi をマイナーバージョンアップしたときにも

esxcli で何か新しいことができないか探してみると

面白いのではないかと思います。

 

以上、esxcli の esxcli サブコマンドの話でした。

最近、vCenter Operations Manager(VCOPS)を使ってみたので紹介してみます。

 

VCOPS とは、VMware vSphere 環境のパフォーマンス監視ツールです。

「vCenter ~」 という名前の通り、基本的に vCenter から性能情報を取得します。

そのため、無償版 ESXi の環境では使えません。

ただし、無償版 ESXi 上の ネステッド ESXi で環境構築することはできます。

※ネスト環境の場合も、結構ハイスペックな物理マシンが必要です。

 

VCOPS では、複数の vCenter から情報収集して、まとめて分析することができます。

また、vCenter のバージョンはそれぞれ異なっていても VCOPS に登録できます。

たとえば、VCOPS 5.8 に 2台のvCenter(vCenter 5.1 U1 と vCenter 5.5)を登録すると

下記のように見えます。(といいつつ vCenter の表示名は手入力ですが・・・)

対応する vCenter のバージョンは、VCOPS のバージョンによって変わるはずです。

vcops1.png

 

vCenter が定常的に取集している性能情報などを

分析用の VM(Analytics VM)が収集し、

Web 画面(UI VM による)で見やすく表示して分析することができます。

VCOPS では、パフォーマンス監視での閾値を自動修正したり、

仮想化基盤の普段の状態をもとに

異常な状態を検知したりできることになっています。

 

 

VCOPS の仕組み

 

VCOPS は、OS へのインストーラではなく、vApp として提供されています。

そのためセットアップは割と簡単で、ただ動かすだけなら2ステップくらいです。

ただし、VCOPS の vApp デプロイ先は DRS クラスタである必要があります。

→DRSクラスタは必須ではありませんでした!

 (http://kb.vmware.com/kb/2013695)すみません・・・

  1. vApp(OVFテンプレート)のデプロイ
  2. VCOPS の設定(情報収集対象の vCenter を登録)

 

VCOPS の vApp は2つの VM で構成されています。

どちらの VM も、OS は SUSE Linux です。

 

UI VM (結果表示&VCOPS 設定)

  • VCOPS を設定変更するための Web 画面を提供する。
  • Analytics VM の分析結果を表示のための Web 画面を提供する。

 

Analytics VM (収集&分析)

  • vCenter から情報収集する。
  • 収集した情報を分析する。

 

VCOPS では、下記のようなイメージで、vCenter の収集している情報を分析~表示しています。

ちなみに、VCOPS の vApp は、

情報収集対象の vCenter が管理している ESXi で稼働していても大丈夫です。

  1. Analytics VM が、VCが定常的に取集していう情報を収集する。
  2. その結果を Analytics VM が分析。
  3. 分析結果は、UI VM が表示する。

vcops2.png

 

UI VM が Web サーバになっていて、

Web ブラウザからアクセスしたときに表示される分析結果は、

下記のような UI で表示されます。vCenter の Web Client と似た空気の UI です。

vcops0.png

 

VCOPS を構成する VM は、それぞれ下記の TCP ポートで通信しています。

UI VM は、VCOPS の設定管理をする 「vCenter Operations Manager 管理」 と

分析結果を表示する 「vCenter Operations Manager vSphere UI」 をもちますが、

どちらも普通のHTTPS(TCP443番ポート)で Web ブラウザからアクセスできます。

 

ちなみに、Analytics VM と UI VM の間では VPN を張って

SSH で情報をやり取りしているようです。

vcops3.png

 

デプロイした vApp を見てみる

 

vSphere Client で、 VCOPS を構成する vApp を見てみます。

(Web Client の方がよかったかもしれませんが・・・見やすかったので)

 

下記のように、2つの VM で VCOPS の vApp が構成されています。

VCOPS の VM は結構大容量で作成されていますが、

ちょっと試すだけなら、Thin プロビジョニングでデプロイすれば

そこまでディスク容量をとらずに動作させることができます。

※下記は、VCOPS をセットアップしてからあまり時間がたっていない状態です。(1日くらい?)

vcops4.png

 

VCOPS の VM を起動するときは、vApp 自体を起動します。

Analytics VM → UI VM の順で起動するように vApp が構成されています。

vcops5.png

 

VCOPS の紹介は概念的な説明が多い気がするので、

ちょっとインフラよりの視点で紹介してみました。

 

以上、VCOPS についてでした。

最近は、ESXi 自身が VMXNET3 のアダプタを使用できたりします。

ただし、これはネステッド ESXi での話です。

nested_esxi_vmxnet3.png


ESXi 5.1 のリリースノートを見ていると、

「ネットワークの問題」に下記のような記載があります。

 

VMware ESXi 5.1 Update 2 リリース ノート

https://www.vmware.com/jp/support/support-resources/pubs/vsphere-esxi-vcenter-server-pubs/vsphere-esxi-51u2-release-notes

VMXNET3 を pNIC としても使用している ESX を実行する仮想マシンがクラッシュする可能性がある

VMXNET3 のサポートは試験的であるため、VMXNET3 を pNIC としても使用している ESX をゲストとして実行している仮想マシンがクラッシュする可能性があります。ESX 仮想マシンのデフォルトの NIC は e1000 であり、この問題はデフォルトをオーバーライドし、VMXNET3 を選択した場合にのみ発生します。

 

回避策:ESX 仮想マシンの pNIC として、e1000 または e1000e を使用してください。

これは普通の VM に作成された VMXNET3 vNIC の問題ではなく、

ネステッド ESXi の VM に作成した VMXNET3 vNIC(ネステッド ESXi から見たら pNIC)

についての問題ということです。

普通に Windows や Linux の VM で VMXNET3 のネットワークアダプタを使う分には

上記の問題は該当しません。

 

ネステッド ESXi に VMXNET3 を付ける場合の設定

 

ネステッド ESXi 用の VM の「設定の編集」→「オプション」タブ で、

ゲストOSのバージョンを「VMware ESXi 5.x」 にしておきます。

esxi-vmxnet3-1.png

 

そして、アダプタ タイプが 「VMXNET 3」 のネットワーク アダプタを作成します。

esxi-vmxnet3-2.png

 

ネステッド ESXi での VMXNET3 の見え方

 

vSphere Client からは下記のように見えます。

vmnic0 が、「VMware Inc. vmxnet3 Virtual Ethernet Controller」 という

10Gbps の 物理 NIC(pNIC) に見えています。

esxi-vmxnet3-3.png

 

ネステッド ESXi に 直接コンソールログイン(例ではSSH)して確認すると

VMXNET3 の vNIC は下記のように見えます。

esxi-vmxnet3-4.png

 

どのみち ネステッド ESXi 自体が テスト用途の機能(本番環境ではサポートされない)

という位置づけですが、より安定させたい場合は、E1000 か E1000E を使用すると

良いと思います。

また、自宅 LAB などで ESXi を使用している場合は、

普通は 10Gbps の NIC がないと思うので、VMXNET3 を使用するメリットはあまり無いはずです。

 

ただ、同一の物理 ESXi で稼働している ネステッド ESXi が多いのであれば、

VMXNET3 を使ってみても面白いかもしれません。パープルスクリーン覚悟で・・・


以上、ネステッド ESXi で VMXNET3 の話でした。