Skip navigation

Blog Posts

Total : 4,318

Blog Posts

1 2 Previous Next

Hello All ,

 

This is in continuation to my Blog series on vCF 3.9. Hope you enjoy reading it.

 

1.     vCF Series – Bring UP (VMware Cloud Foundation 3.9) – vmWARS

2.     vCF Series – Commission & Expand a vSAN Cluster(2) – vmWARS

 

Rgds

-Harjit

日本の vExpert 有志による Advent CalendarのイベントにvExpert一年生として今年から参加させていただきました。

この投稿は、vExperts Advent Calendar 2019 - Adventar の 2日目です。

2日目のブログでは、vSphereの管理をより便利にするためのAPI関連Tipを紹介します。

 

vSphereの管理インタフェースについて

まず最初にvSphereを管理するためにどんな管理インターフェースを使っているかのおさらいです。

とりあえず思い浮かんだものを列挙してみました

    • vSphere Client (HTML5)
    • vSphere WebClient (Flash)
    • vSphere Client (C#)
    • Host Client
    • PowerCLI
    • DCUI
    • VAMI GUI (PSC/VCSA)
    • Shell/SSH
    • ESXi CGI (??? 正式名称をしらないです。。)
    • MOB
    • RVC
    • vSphere API (Python/Java/RESTAPI 他)

まず最も基本であり、親しみがあるインターフェースはvSphere GUI (HTML5/Flash/C#) でしょう。

私自身はvmware サポート関係の仕事なので、実際のユーザがどのように管理しているのかはよく知らないのですが、おそらくDCUI/VAMI/SSHなどは、トラブルシューティング以外の場面では、ほとんど使われないのではないか、と想像してます。

 

vExpertになるような方々が多く愛用されているのは、おそらくPowerCLIなのではないか、と思います。vSphereのGUIにログインすることなく、vSphereへの命令や参照をスクリプト化することができ、GUIでの作業と比較して、正確さ、迅速さ、自動化、などの多大なメリットがあります。

 

一方で、それ以外のAPI (pythonやRESTAPI)などは、vSphereと連携する製品での実装は多くみられますが、実際に運用管理の場面で一から作成することは非常に少ないのではないか、と思います。今回はこれらのマイナーなAPIのなかでも、curlとwgetだけを使って利用できるもの(RESTAPI、MOB、ESXi CGI)に焦点を当ててご紹介したいと思います。

 

PowerCLIを使わない理由

私自身はPowerCLIをほぼ使いません。

PowerCLIを使うのはPowerCLIでしかできない作業をする場合のみです。(独立SSO vCenter間のvMotionなど)

PowerCLIを使わない理由は、一言でいえば私がvSphereサポートを生業にしているためです。

私の職場では、トラブルシューティングの際に、ログ解析だけでなく、実際にお客様環境にログインして事象を調査したり、ログを採取したり、といった作業があります。

そういった作業の際に、PowerCLIを使うことができたら非常に便利だなぁと思うのですが、いかんせんお客様環境のため、PowerCLIがインストールされているとは限りません。

PowerCLIどころか、FlashやJava(JRE)といった、GUI作業に必要なツールすらInstallされていないことが多々あります。

また、場合によってはWindows PCのようなDesktop端末が存在せず、LinuxベースのCUIのみの管理端末しかないことも多く存在します。

つまり先に列挙した例でいうと、

    • vSphere Client (HTML5) >>> ブラウザがないので使えない
    • vSphere WebClient (Flash)   >>> ブラウザがあってもFlashがなくて使えない
    • vSphere Client (C#)  >>>> Install されてない
    • Host Client >>>> ブラウザがないので使えない
    • PowerCLI   >>>> Install されてない
    • DCUI   >>>> アクセス手段がない
    • VAMI GUI (PSC/VCSA)  >>>> ブラウザが使えない
    • Shell/SSH
    • ESXi CGI (??? 正式名称をしらないです。。)
    • MOB
    • RVC
    • vSphere API (Python/Java/RESTAPI 他)

 

つまり、メジャーどころの管理インターフェースのほとんどが利用できない環境で、障害対応をしなくてはなりません。

そのような非常に制限の厳しい状況下で調査やログ採取をするために利用要件の少ないAPIの活用が必要でした

 

なぜCurlとWget?

理由はシンプルです。この二つのコマンドはVCSAを含む多くのLinux端末にデフォルトで搭載されているからです。

そういった端末にSSHで接続さえできてしまえば、API経由で必要な情報を抽出できます。

利用要件はSSHに必要なネットワークアクセスと、認証情報と、Puttyの実行ファイルだけで済みます。

 

 

vSphere RESTAPIをつかってみよう

さて、前置きが長かったですがようやく本題です。まずはcurlコマンドで簡単に利用できるRESTAPIの使い方から紹介します。

私がRESTAPIを学び始めた当初は、比較的難しい開発向けの情報しか見つからず、RESTAPIでできる参照&命令の把握や、リクエスト方法のフォーマットや認証IDの取得方法がわからずとても苦労しました。

しかしながら現在は非常に便利なapi explorerというものがデフォルトで提供されています。

api explorerは一言で言ってしまえば、

「あなたの代わりにRESTAPIのcurlコマンドを作成してれるツール」

です。

どういうことなのか、さっそく見てみましょう。

 

 

API ExplorerにCurlコマンドを生成してもらう

 

api explorerにはvCSAにHTTPSでアクセスした際のランディングページの以下の場所から移動できます。

1.PNG

アクセスすると、操作対象によっていくつかAPIの選択肢が出ますが、vSphere関連の参照&命令がしたい場合はvcenterを選んでください。

2.PNG

 

vcenter API配下には、RESTAPIのパス毎に使用方法の説明などが記載されていますが、とりあえず例としてVMの一覧を取得してみましょう。

まずはpath名がVMのところを展開してください。そうするとメソッドがいくつか表示され、それぞれのメソッドの説明が見えるはずです。

その中で一番上のGET メソッド(仮想マシンの情報を表示する命令)をさらに展開すると具体的なRequest方法の説明が読めますが、

ここではとりあえず、一番下にある「TRY IT OUT!」のボタンを押してみましょう。(下図参照)

3.PNG

 

そうすると、実際にこのRESTAPIを実行するためのCurlコマンドとその実行結果を表示してくれます。

※API Explorerが生成するCurlコマンドにはデフォルトで-kが入ってませんので、証明書関連のエラーが想定される場合は-kを足してください。

 

4.PNG

 

ここで表示されるCurlコマンドをコピペして実行すれば、実際の環境でもそのまま使えるというわけです。めちゃめちゃ便利ですね。

しかし、ちょっと待ってください。実行結果をよく見ると、エラーになっています。

エラーの原因は"This method requires authentication." です。

当然ながら、vCenterから情報を抽出するためには認証が必要なので、認証情報を提供する必要がありました。

 

RESTAPIに必要な認証情報を取得する

結論から言うと、RESTAPIのリクエストヘッダに、session idを入れて送信する必要がありました。

セッションIDは以下のCurlコマンドで取得可能です。

 

curl -k -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'vmware-use-header-authn: test' --header 'vmware-api-session-id: null' -u 'administrator@vsphere.local' 'https://<vcenter ip>/rest/com/vmware/cis/session'

 

↑のコマンドを実行すると、administrator@vsphere.localのパスワードが求められますので、入力してあげると、以下のような感じでSession IDが返されます。

 

5.PNG

 

ここで得たSession IDを、最初に実行したCurlコマンドの vmware-api-session-id に入力してあげればOKです。具体的には以下のようになります。

 

6.PNG

 

↑のコマンドを実行すると対象vCenterで管理される仮想マシンの情報がJsonのフォーマットで入手できます。

 

 

以上が、vSphere REST APIの簡単なご紹介でした。

REST APIは比較的若い機能なのでまだまだできることが限られますが、使いやすいさやスクリプト化のしやすさもあるので今後も拡張されると思います。

なれない方には難しい点がまだあると思いますが、この記事とAPI Explorerを使えばだいぶ簡単にCurlコマンドまでは落とし込めるようになったのではないかと思います。

 

 

ESXi CGI ??? の使い方

ESXi CGIってなんやねん!?と思う方も多いと思いますが、私も正式な呼び名を知らないのでご容赦ください。

ようするに、https://<esxi ip>/host やhttps://<esxi ip>/folderでアクセスできる機能のことを勝手にそう呼んでいるだけです。

ESXiに対する直接の操作になりますので、vCenterが機能していない環境でも利用可能です。

この機能を利用すると以下のことが可能です。

    • /folder にアクセスすることでデータストア上のファイルの閲覧とダウンロード
    • /host にアクセスすることで、ESXiの主要なログファイルや構成ファイルを取得可能
    • vm-supportを取得可能

 

/folderの使い方

特に説明の必要はないと思います。

https://<esxi ip>/folder にアクセスして、ログインも済ませればあとなLook & Feelで使えると思います。

ブラウザの右クリックから対象ファイルのURLも取得可能です。

 

/hostの使い方

/folderと同様に、/hostにアクセスすれば使えます。

限られたファイルしか閲覧できませんが、ESXiへのSSHが不要な点がメリットです。

Curlコマンドを使って簡単に対象のファイルを入手できます。

 

vm-supportの取得方法

以下のコマンドで入手可能です。

wget https://ip/cgi-bin/vm-support.cgi --user <> --password <> --no-check-certificate -O <output file name>

 

この方法は、https://kb.vmware.com/s/article/1967 でも紹介されています。

vm-supportの取得方法はいくつかやり方がありますが、個人的にはこの方法が一番楽だと思います。

 

MOBの使い方

MOBはvCenterとESXiの両方に対して使える機能です。

vCenterはデフォルトで有効ですが、ESXi6.0以降のESXiではデフォルトで無効になっているので利用前に有効化する必要があります。

有効化の方法はこちらをご参考にしてください。(https://www.virtuallyghetto.com/2015/02/quick-tip-vsphere-mob-is-disabled-by-default-in-esxi-6-0.html

 

こちらの使用方法もとても簡単です。URLに情報を取得したいmoidを指定してあげればOKです。

例えば以下のような形になります。

https://<esxi/vcenter ip>/mob/?moid=ha-host     

 

自分がアクセスしたいオブジェクトのURLを知るためにはブラウザでアクセスするのが一番簡単です。

いちどvcenter/esxiのmobブラウザのホーム(/https://ip/mob)にアクセスしてブラウザからたどっていって、対象のオブジェクトを見つけたらその時のURLを記録するだけです。

7.PNG

 

このURLに対してcurlやwgetをしてあげればこのページの情報が入手できます。※ただしHTMLフォーマットになります。

 

今回紹介した方法の中では、mobから得られる情報が一番多いです。しかしながら出力がHTMLになってしまうという使いにくさと、メソッドを実行する際のちょっと特殊な方法をとる必要があるため、使用には難易度が高いです。

メソッドの実行に関して今回はご紹介はしませんが、もしご興味がある場合は私の過去のブログをご参考にしていただければと思います。

     CurlコマンドでESXiのSSHを有効化する方法

     ※ポイントとしては、MOBのURLにたいして 直接Curlを実行するだけではメソッドを実行することはできず、Mobブラウザに隠されているHidden 要素のSessionIDをPOSTしてあげる必要があります。

 

 

 

おわりに

今回の記事ではマイナーなAPIや管理インターフェースから情報やログファイルを入手する方法を紹介しました。

どれもこれもPowerCLIと比べると便利さや機能性に欠けますので、ユーザ目線ではあまり役に立たないかと思います。

しかしながら、Curlならではの良さもありますので、もしお役に立てそうな場面がありましたら是非とも活用してみてください。

あと、サポートの人たちはこんな感じで苦労しながら調査していることを少しでも思い出していただけたら、調査用の端末には十分な性能とアプリケーションをご準備いただけますと幸いです。

 

以上、vSphere APIのTipでした。

明日の vExperts Advent Calendar 2019 - Adventar は、interto さんです。よろしくお願いします。

今年も、日本の vExpert 有志による Advent Calendar をやります。

この投稿は、vExperts Advent Calendar 2019 - Adventar の 1日目です。

1日目なので、多くの人が利用しているであろう vCenter Server にかかわる Tips を紹介します。

 

最近の vCenter Server の「vSphere Client」について。

これまで、vCenter Server(以降は vCenter)で仮想化基盤を管理するツールは何度か刷新されています。

簡単にまとめると、つぎのようになります。

  • もともと C#版の「vSphere Client」があった。(vSphere 6.0 まで)
  • Flash(FLEX)を利用する「vSphere Web Client」が vSphere 5.1 で登場したが、6.7 より後は廃止予定。
  • HTML5 版の「vSphere Client」が vSphere 6.5 で登場。基本的に vCenter 6.5 以降ではこの vSphere Client を利用する。
    これまでの改善の様子: vSphere Client の機能の更新

 

もう廃止される予定の vSphere Web Client については、

vCenter 6.7 U3 では vSphere Web Client のリンクに赤字で「廃止」と明記されました。

(とはいっても、vCenter 6.7 U3 でも、まだ使用できます)

vc-motd-00.png

 

vCenter 6.7 U3 の vSphere Web Client / vSphere Client のログイン画面です。

この画面は vSphere Web Client / vSphere Client で共通です。

vc-motd-01.png

 

vSphere Web Client にログインすると、

vSphere Client へ誘導するメッセージが表示されています。

vc67u3-ngc-01.png

 

一方、HTML5 版の vSphere Client のデプロイ直後の vCenter の画面です。

最近の VMware 製品の Web UI は、Clarity というフレームワークを利用しており、

だいたい統一感のあるデザインになっています。

vc-motd-02.png

 

今回の vCenter 環境について。

前掲のスクリーンショット「ビルド 14792544」と表示されているので、

2019年12月01日の時点で最新バージョンである「vCenter Appliance 6.7 Update 3a (6.7.0.41000)」です。

vCenter のバージョンとビルド番号は、下記 KB の「Client/MOB/vpxd.log」で確認できます。

 

Build numbers and versions of VMware vCenter Server (2143838)

https://kb.vmware.com/s/article/2143838

 

ちなみに今回の vCenter は、昨年のアドベントカレンダー投稿とおなじく CLI でデプロイしています。

 

昨年の Advent Calendar の投稿:

vCenter 6.7 u1 の HTML5 vSphere Client をクリスマス風にしてみる。

 

今年の JSON: 最近、便利なので "__comments" にデプロイのコマンドラインをメモしています。

lab-vcsa-67u3.json · GitHub

 

vCenter の「今日のメッセージ」設定。

それでは、今日時点で最新の vSphere Client での Tips です。

vSphere による仮想化基盤では、システム管理者は頻繁に vSphere Client にログインするはずです。

そこで、システム管理者に対してメッセージを贈ってみます。

 

製品ドキュメント:

他のログイン ユーザーへのメッセージの送信

 

vCenter のインベントリにて、

vCenter → 「設定」 → 「今日のメッセージ」を開いて、「編集」ボタンをクリックします。

そして、「今日のメッセージの編集」にメッセージを記入して「OK」をクリックします。

vc-motd-03.png

 

vSphere Client から、一度ログアウトします。

vc-motd-04.png

 

vSphere Client にログインしなおすと、画面上部の青帯に、メッセージが表示されています。

(しかし、そんなに目立たない気もします。)

このメッセージは vCenter の「詳細設定」にある vpxd.motd に設定されます。

motd は、message of the day の略です。

vc-motd-05.png

ちなみに、このパラメータは PowerCLI / API だと Read Only で設定できなそうです。

あと、etc.motd のほうは vSphere Client ではなくコンソール / SSH のログイン メッセージ設定です。

 

vCenter Single Sign-on のメッセージ設定。

ただこれでは、メッセージに気づかないユーザもいるかもしれません。

そこで、もうすこしインパクトの強いメッセージ発信をしてみます。

 

先ほどのメッセージは、「vCenter Server」のもつメッセージ機能でした。

ここからは、vCenter の別コンポーネントである「Platform Services Controller」(PSC)のもつ

vCenter Single Sign-on のメッセージ機能を利用してみます。

 

製品ドキュメント:

ログイン メッセージの管理

 

PSC の設定は、vSphere Client の「管理」メニューから実施します。

vc-motd-10.png

 

Single Sign-On 配下の「設定」→「ログイン メッセージ」タブで、

「編集」をクリックします。

vc-motd-11.png

 

「ログイン メッセージの表示」を On にして、

「ログイン メッセージ」と「ログインメッセージの詳細」を記入してから「保存」します。

vc-motd-12.png

 

そして vSphere Client をログアウトすると・・・

vc-motd-13.png

 

vSphere Client の(PSC による)ログイン画面に、メッセージが表示されます。

vc-motd-14.png

 

メッセージのリンクをクリックすると、メッセージの詳細が表示されます。

・・・ただ、これだけだと、先ほどのメッセージより主張が弱いと感じるかたも多いと思います。

vc-motd-15.png

 

さらに、PSC のメッセージ機能では「承諾チェックボックス」を設置できます。

なお、Advent Calendar 紹介メッセージでこの設定を有効にするのはアレなので、ここからはメッセージを変更しています。

検証環境などでありがちな「このラボは2019/12/25に廃止予定です。」といったメッセージを設定しました。

vc-motd-16.png

 

これでログイン画面には、メッセージだけでく、

チェックを On にしないとログインできなくなる「次に同意します」チェック ボックスが表示されます。

チェック ボックスを Off にしたままだと、下記のように追加でメッセージが表示され、ログインできません。

vc-motd-18.png

 

「次に同意します」チェックボックスの隣のメッセージをクリックすると、

さきほどと同様に、メッセージの詳細が表示されます。

vc-motd-19.png

 

チェックを On にすることで、ログインできるようになります。

vc-motd-20.png

 

メッセージを工夫すれば、さまざまな使い道がありそうです。

vc-motd-21.png

 

以上、vCenter の Tips でした・・・

明日の vExperts Advent Calendar 2019 - Adventar は、Kaneda Naoyuki さんです。よろしくお願いします。

Every part of the virtual infrastructure environment needs a channel to communication and a safe and secure channel always requires a certificate. ESXi Hosts, vCenter Server, NSX Manager, Horizon Connection Server and so on, each one of them has at least a machine certificate or a web-access management portal with a self-signed SSL certificate. After introducing of vSphere6.0 Platform Service Controller (PSC) will handle the vSphere generated certificates with a web access panel that has been called VMware Certificate Authority (VMCA). But in this post I want to introduce some CLI to manage VMware certificates:

  1. VECS-CLI: This is a useful CLI to manage (create, get, list, delete) certificate stores and private keys. VECS (VMware Endpoint Certificate Stores) is the VMware SSL Certificate repository. Pic1 show usage of some of its syntax:

    vecs-cli-exmp1.png

  2. DIR-CLI: Manage (create, list, update, delete) everything inside the VMware Directory Service (vmdir): solution user accounts, certificates, and passwords.

    dircli-p1.png

    dircli-p2.png

  3. Certool: View, Generate and revoke certificates.

    certool.png

There are many types of stores inside the VECS:

  1. Trusted Root: Includes all of the default or added trusted root certificates.
  2. Machine SSL: With the release of vSphere6.0 all communication of VC & PSC services are executed through a reverse proxy, so they need a machine SSL certificate that is also backward compatible (ver 5.x). Embedded PSC also requires Machine Certificate for its vmdir management tasks. 
  3. Solution users: VECS stores for a separate certificate with a unique subject for each of solution users like VPXD. These user certificates are used for authentication with VC SSO.
  4. Backup: Provides revert action to restore (only) the last state of certificates.
  5. Others: Contains VMware or some Third-party solution certificates.

Now let me ask what are the roles of solution users? There are five solution users:

 

  1. machine: License server and logging service are the main acts. It's important to know Machine solution user certificate is totally different from machine SSL certificate that has been required for the secure  connections (like LDAP for vmdir / HTTPS for web access) in each node of VI (VC / PSC instance)
  2. SMS: Storage Monitoring Service.
  3. vpxd: vCenter Daemon activity (Managing of VPXA - ESXi host agents)
  4. vpxd-extensions: Like Auto Deploy and Inventory service
  5. vsphere-WebClient: lol, certainly web client and some additional services like performance chart.

The default paths of certificate management utilities are down below:

     /usr/lib/vmware-vmafd/bin/vecs-cli

     /usr/lib/vmware-vmafd/bin/dir-cli

     /usr/lib/vmware-vmca/bin/certool

 

And for windows type of vCenter server you can go to the:

    "%programfiles%\vmware\vcenter server\vmafdd

 

Surely I will talk about what is the vmafd itself and other useful CLI vdcpromo in this path on another post. Also, I will provide a video about how to work with certificate-manager." is the default path of windows-based vCenter server.

For the last note, always remember that deleting Trusted Roots is not permitted, because if you do it, it can cause some sophistic problems in your VMware certificate infrastructure.

Link of content inside my personal blog: Undercity of Virtualization: Manage VCSA Certificates - Chapter I

TX1310 M1に富士通カスタムのESXi6.7をインストールしたところ、

設定したパスワードでvSphereWebClientに入れなくなった。

 

https://i-think-it.net/esxi65-easy-password-configuration/

 

SSHもインストール直後は入れたので

(何度か試すと入れなくなった)

 

ここを参考にパスワード要件を最弱にし、英語小文字のみのパスワードにしたところ入れた。

 

改めてパスワード要件戻すと入れるのかも?

まだ試してはいない。。。

Copied from the RAWC Installation Guide written by Fred Schimscheimer

 

When validating VMware Horizon™ and VMware Horizon Cloud™ designs it is important to simulate

real world usage as closely as possible. The Desktop Reference Architecture Workload Simulator

(RAWC) can be used to simulate a user workload in a typical Microsoft Windows® desktop or

Microsoft Windows® Remote Desktop Services (RDS) environment.

Desktop RAWC runs on each desktop virtual machine (VM) on one or more VMware ESX™ hosts.

Desktop RAWC can also run on Microsoft Windows Server 2012R2, 2016 or 2019 host with Remote

Desktop Services installed. Each target desktop VM or RDS host VM is equipped to run a RAWC

workload that simulates typical user behavior, running an application set commonly used across a

broad array of desktop environments. The workload has a set of randomly executed functions that

perform operations on a variety of applications.

Each test is configured using the Desktop RAWC UI. The UI enables you to save and retrieve test

parameters and create log folders. You can use the UI to increase the load or adjust the user

behavior, such as the number of words per minute that are typed and the delay between applications

being launched.

The workload configuration typically used includes Microsoft Word, Excel, PowerPoint, Outlook,

Internet Explorer, Windows Media Player, Adobe Acrobat and 7-Zip. Additional applications include

Chrome Firefox, Notepad, Photos and YouTube. During the execution of the workload, multiple

applications are opened at the same time and windows are minimized and maximized as the workload

progresses, randomly switching between each application. Individual application operations that are

randomly performed can include:

  • Microsoft Word – Create, minimize, maximize, close, write text, save modifications
  • Microsoft Word (Random) – Create, minimize, maximize, close, write random words/numbers,save modifications
  • Microsoft Excel – Create, minimize, maximize, close, write random numbers, insert/delete columns/rows, copy/paste formulas, save modifications
  • Microsoft PowerPoint – Open, minimize, maximize, close, conduct a slide show presentation
  • Microsoft Outlook – Open, minimize, maximize, close, create/send emails, setup user account for both Sendmail and Gmail
  • Internet Explorer – Open, minimize maximize, close, browse page
  • Windows Media Player – Open, close, view a video
  • Adobe Acrobat Reader (Browse) – Open, minimize, maximize, close, browse random pages in PDF document
  • Adobe Acrobat Reader (Scroll) – Open, minimize, maximize, close, select speed and time to scroll a PDF document
  • Chrome – Open, minimize, maximize, close, browse page
  • Firefox – Open, minimize, maximize, close, browse a specified URL
  • File Copy – Copy files from the RAWC Controller to the User’s Documents directory on the desktop VM
  • Notepad – Open, minimize, maximize, close, create pdf file and print
  • Photos – Open, close, several photos
  • Sleep – Sleep test for a specified period of time
  • YouTube video – Open, close, view a specific YouTube video
  • 7-Zip – Open, close, compress large files

There are several videos that have been created that will provide you with an overview RAWC

including installation, configuring a test, running a test and charting the results. You can find these

videos on the RAWC Community page.

 

Depending upon the size of the test, you may use multiple ESX hosts and session launcher VMs, and as

many target desktop VMs or RDS Session Host VMs as you want to test. There is no scale limitation in

RAWC.

 

Desktop RAWC Architecture.jpg

 

fschimscheimer

In the third part of the VDI troubleshooting series, unlike the last two parts, I want to talk about client-side connection problems. For instance, if there is a dedicated subnet of IP addresses for Zero Client devices, then incorrect setup or miss-configuration of routing settings can be the reason for the connection problem between VDI clients and servers. Same way, wrong VLAN configs (ID, subnet, Inter VLAN Routing) can be the main reason for the trouble. So I provided a checklist of "What to do if you have a problem with your Horizon connection servers?"

 

1. Check the correctness of Zero/Thin client's communication infrastructure (routing, switching, etc) to the VDI servers (Connection Server, Security Server)

2. Check network connection between Connection Server subnet and deployed Virtual Machines of Desktop Pool, if they are separated. Of course, logically there is no need to connect their dedicated Hosts/Clusters to each other, so you can have separate ESXi Clusters, one for Desktop pools and another for VDI Servers.

3. Investigate the vCenter Server is accessible from Connection Server and also its related credential.

4. If you have a Composer Server, check it's Services. So many times I saw the Composer Server service does not start after a server reboot, while it's automated and no warning/error event has been reported. Also, you need to check the ODBC Connection between Composer Server and its Database.

5. Investigate installed View Agent state inside the Desktop Pool's VMs. If you need to provide client redirection to the desktop (without the presence of Connection Server) View Direct Agent is needed too.

6. A TCP connection on port 4001(non-SSL)/4002(SSL-based) between Desktop's View Agent and Connection Server must be established, It's required for connection and you can check it by running netstat -ano | findstr "4001".

7. Review the User Entitlement for provided Desktop Pools, maybe there is a mistake especially when you add AD Groups instead of AD Users. (also check them, are they still available or assigned to the other users?)

8. Type of Virtual Desktop provisioning is also important. Except for Full Clone, on Linked Clone and Instant Clone models, you need to check the status of Virtual Desktops in Inventory\Resources\Machines of the View Admin web page.

9. If there is an interruption in connected sessions, you need to review their states in Inventory\monitoring of the View Admin web page.

10. For the last Note: DO NOT FORGET TO CONFIGURE EVENT DATABASE! I had encountered too many Horizon View deployment that did not configure any event database, so in troubleshooting situations, we had NOTHING to know really what happened.

I hope it can be helpful for you all buddy...

Link to the original post on my personal blog: Undercity of Virtualization: VMware VDI (Horizon View) Troubleshooting - Part III

 

vSAN Specialist 2019 取得しました。

vSAN Specialist 2019 を取得しました。

すでにvSAN Specialist 2017を取得していたので、特に勉強はしませんでしたが問題なく合格できました。

一応、メモも兼ねて合格のアドバイスなどを残せればと思います。

 

 

試験概要

試験コード:5V0-21.19 (https://www.vmware.com/education-services/certification/vsan-2019-exam.html)

合格点 300/500満点中  (筆者は440点で合格)

試験時間 120分 (英語のみ ※ 2019/11/1現在)

 

試験範囲:vsan 6.7U1以降を想定した内容になっています。vSANの設計・構築・管理を問う問題がでますが、管理(運用とトラブルシューティング)がメインという印象です。

 

勉強資料

以下の資料は上記試験範囲のすべてではありませんが、この辺りを押さえておけば合格点は取れます。

そもそも、vSANに限らず、特定のIT技術の設計・構築・管理を全部カバーするエンジニアってかなり限られると思いますし。。。

 

試験を受けた感想

普段からvSAN触っている人ならNo勉強で行けると思います。出題のメインは管理とトラブルシューティングだった印象です。

以下のブログで紹介されている練習問題をマスターしていけばほぼほぼ大丈夫だと思います。

https://lab8010.com/vsan-specialist-practice/

※上記はvsan specialist 2017 (vSAN 6.6) までの範囲から作成された問題ですが今回の試験でも有効です

※本件と関係ないですが、とてもいいブログなのでぜひフォローすることをお勧めします

stretched cluster関連の問題は割と多めにでますので、不慣れな人はそこは勉強したほうがいいですね。

2-nodeも少なからず出ました。Stretched Clusterの要件の差異なども知っておいたほうがいいですね(Witnessへのネットワーク要件が、それぞれ200msと500msという違いがありますね)

iscsi TargetやEncryptionやUnmapといった内容もちょいちょい選択肢で出てきますが、わざわざ勉強しなくても合格点に足りると思いますので、用語として知っておけば大丈夫です

vSAN BootstarpとかConsigAssistといった、私自身のなじみの薄い分野の問題が出ることを警戒していましたが、わずかにしかでませんでした。答えはわかりませんでしたが、特に気にしてないです。合格しましたし。

 

総括

    • 上記のブログの練習問題で8割越え目指す
    • ストレッチクラスタの資料は熟読する
    • 余裕があれば2Nodeも。

vRealize Operations Manager delivers intelligent operations management with application-to-storage visibility across physical, virtual, and cloud infrastructures. Using policy-based automation, operations teams automate key processes and improve IT efficiency.

Using data collected from system resources (objects), vRealize Operations Manager identifies issues in any monitored system component, often before the customer notices a problem. vRealize Operations Manager also frequently suggests corrective actions you can take to fix the problem right away. For more challenging problems, vRealize Operations Manager offers rich analytical tools that allow you to review and manipulate object data to reveal hidden issues, investigate complex technical problems, identify trends, or drill down to gauge the health of a single object.

You can download vRealize Operations Manager from the VMware vRealize Operations download page.

You can download Management Packs and End Point Operations Plug-Ins for vRealize Operations Manager from VMware Solution Exchange.

vRealize Operations Manager 6 - Concepts: Alerts, Symptoms, Recommendations and Actions (vSOM) - YouTube https://youtu.be/4ZOeZV8dfTI

vSphere with Operations Management Overview - YouTube

Here are steps to Deploy:-

Download the ovf file from the VMware portal, if you are entitlement then only you will able to download the ovf file and the total is of OVF file is around 2.5 GB

Access the Vcenter and select Deploy ovf file

browse the ovf file from the vcenter deployment windows

Select the DataCenter in which you want to deploy the VROPS Appliance Virtual Machine

Select the Node in which you want to deploy the VROPS

Review the Details and select Next

Select the License Agreements and select next

Select the Deployment Configuration type based your requirment

Select the Proper network and move Next

Provide the IP Configuration  and move next

Review the provided Configuration and click Finish

wait till the deployment finish, Deployment Status can be seen from the vcenter task status. once the deployment task completes. you open the web console of VM and can see the vm status as shown in below-console

Stay tuned for VROPS configuration

Thanks for your love and support,

Please feel free for any suggestion

vRealize Operations Manager delivers intelligent operations management with application-to-storage visibility across physical, virtual, and cloud infrastructures. Using policy-based automation, operations teams automate key processes and improve IT efficiency.

Using data collected from system resources (objects), vRealize Operations Manager identifies issues in any monitored system component, often before the customer notices a problem. vRealize Operations Manager also frequently suggests corrective actions you can take to fix the problem right away. For more challenging problems, vRealize Operations Manager offers rich analytical tools that allow you to review and manipulate object data to reveal hidden issues, investigate complex technical problems, identify trends, or drill down to gauge the health of a single object.

In these blogs i am trying to cover the configuration steps to successfully deploy the Nutanix

  1. Access the vRealize Operations Manager configuration wizard from the IP address which you Assign at the time of deployment
  2. from the below wizard select the New installation

 

 

3. you just need to enter the admin password to a setup admin account

4. Certification selection based on your choice and requirement, since it is lab setup I have selected the default one

5. Provide the master node name and add valid NTP server

6.  here you configure the HA setting for VROPS, in my case, it is a standalone server so let's move forward

7. and select finish to close the wizard, here you still have the option to go back and review setting

8. now you VROPS console is ready for further configuration

9. navigate to the administrator tab to add the vcenter to build communication, it required vcenter root permission to fetch the information

Thanks, Keep Enjoy Learning

to know how it was deployed, follow below blog

https://nishantpanchal.wordpress.com/2019/10/19/how-to-deploy-vrealize-operation-manager-7-5/

There will be some instances where you really want to destroy the Nutanix cluster, especially when you can’t connect each node to the network or you might not aware about the cluster's IP address to access. following steps are very useful when you can’t run the cluster destroy command from CVM

with the following steps you can directly connect the Nutanix nodes and can perform the cluster destroy task:

NOTE:- MAKE SURE YOU ARE TRYING TO DESTROY CORRECT CLUSTER

You can use the .node_unconfigure file to forcibly destroy the cluster in such situations as follows.

  • Change to the /home/nutanix directory.
    #nutanix@cvm$ cd /home/nutanix
  • Create the .node_unconfigure file in the /home/nutanix directory.
    #nutanix@cvm$ touch .node_unconfigure
  • Restart Genesis.
    #nutanix@cvm$ genesis restart

Stopping genesis (pids [4102, 4138, 4160, 4161])Genesis started on pids [18917

  • #nutanix@cvm$ cluster status

and the message should appear “Cluster is currently unconfigured. Please create the cluster.” This is expected and correct  At this time, login to Prism and attempt to add the cvm to the cluster. If the procedure doesn’t seem to work, make sure internal vSwitch is present(this method will not work without communication over 192.168.5.0/24 network) and make sure CVM is able to reach host over management network (CVM & HOST should be configured on the same subnet). If you are facing issues with the Foundation process on the Controller VM in question, proceed to the next steps.Verify if the Foundation process is working. Nutanix recommends that you use both the genesis status and ps -ef commands to check the Foundation status.nutanix@cvm$ ps -ef | grep foundationnutanix 19291 4616 0 19:10 pts/0 00:00:00 grep foundationYou can see that the Foundation process is not workingKill the Foundation process if it is alive.$ genesis stop foundation$ kill -9 PID

  • Remove the zk entries from /etc/hosts

nutanix@cvm$ vi /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6127.0.1.1 Nutanix-Controller-VM127.0.0.1 NTNX-16SM65110113-A-CVM

  • Stop the zookeeper process.

nutanix@cvm$ genesis stop zookeeper

  • Verify that the .node_unconfigure file does not exist

nutanix@cvm$ rm .node_unconfigurerm: cannot remove `.node_unconfigure’: No such file or directory

  • Verify if the cluster is destroyed or not.

nutanix@cvm$ cluster status

2016-07-11 19:13:24 CRITICAL cluster:2143 Cluster is currently unconfigured. Please           create the cluster

You can see that the cluster is destroyed.

Verify if the Foundation process is now working or not

nutanix@cvm$ genesis status

 

You can see that Foundation to create new cluster is now working

The new features and fixes are

 

1. Host enter/exit standby mode feature added.

2. VM standby guest OS feature added.

3. Random app crash after reconnecting to a session, which previously was disconnected, fixed.

 

More details here

 

device-2019-11-09-193222.png

NSX-T の Policy API の「Hierarchical API」で、ネットワークの作成/削除をしてみます。

 

前回の投稿はこちら。

NSX-T の Policy API をためす。Part.4(Hierarchical API での GET 編)

 

JSON ファイルの用意。

今回は、これまでの投稿で何度か構築したラボ ネットワーク環境を Hierarchical API  で作成してみます。

 

つぎの一連の投稿で作成したネットワークと、同様のものです。

前提として、前回までに作成/確認したオブジェクトは、ひととおり削除してあります。

自宅ラボで NSX-T 2.5 環境を構築する。Simplified UI 編。Part.1 ※Web UI で作成。

NSX-T の Policy API をためす。Part.3(オブジェクト作成編) ※Policy API での別方法で作成。

 

まず、前回に Hierarchical API で GET した情報から、

必要な部分のみを残した JSON ファイルを用意しておきます。

NSX-T の Policy API をためす。Part.4(Hierarchical API での GET 編)

 

JSON ファイルはある程度あつかいやすいように、3つに分けてみました。

より多く分割、もしくは少ない JSON ファイルにまとめることも可能です。

 

ext-vlan.json ファイルの内容。

{

  "resource_type": "Infra",

  "id": "infra",

  "children": [

    {

      "Segment": {

        "id": "seg-vlan-0200",

        "display_name": "seg-vlan-0200",

        "type": "DISCONNECTED",

        "vlan_ids": [

          "200"

        ],

        "transport_zone_path": "/infra/sites/default/enforcement-points/default/transport-zones/4954eeca-decb-487a-8582-b011d60ba19f",

        "resource_type": "Segment",

        "marked_for_delete": false

      },

      "resource_type": "ChildSegment",

      "marked_for_delete": false

    }

  ]

}

 

tier0.json ファイルの内容。

{

  "resource_type": "Infra",

  "id": "infra",

  "children": [

    {

      "Tier0": {

        "id": "t0-gw-01",

        "display_name": "t0-gw-01",

        "ha_mode": "ACTIVE_STANDBY",

        "failover_mode": "NON_PREEMPTIVE",

        "transit_subnets": [

          "100.64.0.0/16"

        ],

        "internal_transit_subnets": [

          "169.254.0.0/28"

        ],

        "children": [

          {

            "LocaleServices": {

              "id": "8ad9e401-f41e-4227-8445-36b1092c76a3",

              "display_name": "8ad9e401-f41e-4227-8445-36b1092c76a3",

              "children": [

                {

                  "Tier0Interface": {

                    "id": "t0-uplink-01",

                    "display_name": "t0-uplink-01",

                    "edge_path": "/infra/sites/default/enforcement-points/default/edge-clusters/a2958967-0579-4cbf-a018-96cfa6553fae/edge-nodes/8e1b5bda-e116-49da-8b4b-bbb2961a7900",

                    "segment_path": "/infra/segments/seg-vlan-0200",

                    "type": "EXTERNAL",

                    "subnets": [

                      {

                        "ip_addresses": [

                          "192.168.200.2"

                        ],

                        "prefix_len": 24

                      }

                    ],

                    "resource_type": "Tier0Interface",

                    "marked_for_delete": false

                  },

                  "resource_type": "ChildTier0Interface",

                  "marked_for_delete": false

                }

              ],

              "resource_type": "LocaleServices",

              "marked_for_delete": false

            },

            "resource_type": "ChildLocaleServices",

            "marked_for_delete": false

          },

          {

            "PolicyNat": {

              "id": "USER",

              "display_name": "USER",

              "nat_type": "USER",

              "children": [

                {

                  "PolicyNatRule": {

                    "resource_type": "PolicyNatRule",

                    "id": "b1a7aa47-e299-4369-a06b-3d10d48e8c68",

                    "display_name": "t0-snat-01",

                    "sequence_number": 100,

                    "action": "SNAT",

                    "source_network": "172.16.0.0/16",

                    "service": "",

                    "translated_network": "192.168.200.2",

                    "scope": [],

                    "enabled": true,

                    "marked_for_delete": false

                  },

                  "resource_type": "ChildPolicyNatRule",

                  "marked_for_delete": false

                }

              ],

              "resource_type": "PolicyNat",

              "marked_for_delete": false

            },

            "resource_type": "ChildPolicyNat",

            "marked_for_delete": false

          },

          {

            "StaticRoutes": {

              "id": "t0-route-01",

              "display_name": "t0-route-01",

              "network": "0.0.0.0/0",

              "next_hops": [

                {

                  "ip_address": "192.168.200.1",

                  "admin_distance": 1

                }

              ],

              "resource_type": "StaticRoutes",

              "marked_for_delete": false

            },

            "resource_type": "ChildStaticRoutes",

            "marked_for_delete": false

          }

        ],

        "resource_type": "Tier0",

        "marked_for_delete": false

      },

      "resource_type": "ChildTier0",

      "marked_for_delete": false

    }

  ]

}

 

tier1.json ファイルの内容。

{

  "resource_type": "Infra",

  "id": "infra",

  "children": [

    {

      "PolicyDnsForwarderZone": {

        "resource_type": "PolicyDnsForwarderZone",

        "id": "dns-zone-01",

        "display_name": "dns-zone-01",

        "dns_domain_names": [],

        "upstream_servers": [

          "192.168.1.101",

          "192.168.1.102"

        ],

        "marked_for_delete": false

      },

      "resource_type": "ChildPolicyDnsForwarderZone",

      "marked_for_delete": false

    },

    {

      "DhcpServerConfig": {

        "id": "dhcp-sv-01",

        "display_name": "dhcp-sv-01",

        "server_address": "172.16.254.254/24",

        "lease_time": 86400,

        "resource_type": "DhcpServerConfig",

        "marked_for_delete": false

      },

      "resource_type": "ChildDhcpServerConfig",

      "marked_for_delete": false

    },

    {

      "Tier1": {

        "id": "t1-gw-01",

        "display_name": "t1-gw-01",

        "tier0_path": "/infra/tier-0s/t0-gw-01",

        "failover_mode": "NON_PREEMPTIVE",

        "enable_standby_relocation": false,

        "dhcp_config_paths": [

          "/infra/dhcp-server-configs/dhcp-sv-01"

        ],

        "route_advertisement_types": [

          "TIER1_DNS_FORWARDER_IP",

          "TIER1_CONNECTED"

        ],

        "children": [

          {

            "LocaleServices": {

              "id": "96770e38-3e86-4873-bef6-71d60267c957",

              "display_name": "96770e38-3e86-4873-bef6-71d60267c957",

              "edge_cluster_path": "/infra/sites/default/enforcement-points/default/edge-clusters/a2958967-0579-4cbf-a018-96cfa6553fae",

              "preferred_edge_paths": [

                "/infra/sites/default/enforcement-points/default/edge-clusters/a2958967-0579-4cbf-a018-96cfa6553fae/edge-nodes/8e1b5bda-e116-49da-8b4b-bbb2961a7900"

              ],

              "resource_type": "LocaleServices",

              "marked_for_delete": false

            },

            "resource_type": "ChildLocaleServices",

            "marked_for_delete": false

          },

          {

            "PolicyDnsForwarder": {

              "id": "dns-forwarder",

              "display_name": "dns-sv-01",

              "listener_ip": "172.16.253.254",

              "default_forwarder_zone_path": "/infra/dns-forwarder-zones/dns-zone-01",

              "resource_type": "PolicyDnsForwarder",

              "marked_for_delete": false

            },

            "resource_type": "ChildPolicyDnsForwarder",

            "marked_for_delete": false

          }

        ],

        "resource_type": "Tier1",

        "marked_for_delete": false

      },

      "resource_type": "ChildTier1",

      "marked_for_delete": false

    },

    {

      "Segment": {

        "id": "seg-overlay-01",

        "display_name": "seg-overlay-01",

        "type": "ROUTED",

        "subnets": [

          {

            "gateway_address": "172.16.1.1/24",

            "dhcp_ranges": [

              "172.16.1.10-172.16.1.250"

            ],

            "network": "172.16.1.0/24"

          }

        ],

        "transport_zone_path": "/infra/sites/default/enforcement-points/default/transport-zones/4d5e3804-e62c-40ab-af7c-99bab2d5e5e8",

        "connectivity_path": "/infra/tier-1s/t1-gw-01",

        "resource_type": "Segment",

        "marked_for_delete": false

      },

      "resource_type": "ChildSegment",

      "marked_for_delete": false

    },

    {

      "Segment": {

        "id": "seg-overlay-02",

        "display_name": "seg-overlay-02",

        "type": "ROUTED",

        "subnets": [

          {

            "gateway_address": "172.16.2.1/24",

            "dhcp_ranges": [

              "172.16.2.10-172.16.2.250"

            ],

            "network": "172.16.2.0/24"

          }

        ],

        "transport_zone_path": "/infra/sites/default/enforcement-points/default/transport-zones/4d5e3804-e62c-40ab-af7c-99bab2d5e5e8",

        "connectivity_path": "/infra/tier-1s/t1-gw-01",

        "resource_type": "Segment",

        "marked_for_delete": false

      },

      "resource_type": "ChildSegment",

      "marked_for_delete": false

    }

  ]

}

 

ネットワーク環境の作成。

これまでの投稿で紹介したように、API のコールには、Linux クライアントで curl コマンドを利用します。

変数 CREDには「ユーザ名:パスワード」、MGR には NSX Manager のアドレスを格納してあります。

$ MGR=lab-nsxt-mgr-01.go-lab.jp

$ CRED='admin:VMware1!VMware1!'

 

今回コールする API は、一律でつぎのものです。

対象のオブジェクトとその階層、作成/削除などは、リクエストに渡す JSON データで指定しています。

PATCH /policy/api/v1/infra

 

それでは、ネットワークを作成していきます。

NSX Manager の UI でも、はじめはオブジェクトがない状態です。

API コールのたびに UI を更新すると、JSON に記載したオブジェクトが作成された様子がわかるはずです。

nsxt-mgr-obj-01.png

 

ext-vlan.json を指定して、境界のネットワークになる、VLAN セグメントを作成。

$ curl -ks -u $CRED -H "Content-Type: application/json" -X PATCH -d @./ext-vlan.json https://$MGR/policy/api/v1/infra

 

tier0.json を指定して、Tier-0 ゲートウェイと一連のオブジェクトを作成。

$ curl -ks -u $CRED -H "Content-Type: application/json" -X PATCH -d @./tier0.json https://$MGR/policy/api/v1/infra

 

tier1.json を指定して、Tier-1 ゲートウェイと一連のオブジェクトを作成。

$ curl -ks -u $CRED -H "Content-Type: application/json" -X PATCH -d @./tier1.json https://$MGR/policy/api/v1/infra

 

ここまでの API コールで、NSX Manager でオブジェクトが作成されました。

nsxt-mgr-obj-02.png

 

ネットワーク環境の削除のための JSON ファイル準備。

以前紹介したように、Policy API では、DELETE メソッドでオブジェクトをひとつずつ削除できます。

NSX-T の Policy API をためす。Part.2(DELETE 編)

 

Policy API を Hierarchical で利用すると、JSON データの marked_for_delete フラグによるオブジェクト削除もできます。

この場合、環境作成時の JSON ファイルで、削除対象だけ「marked_for_delete: true」とフラグを指定します。

「marked_for_delete: true」を親階層のオブジェクトで指定すると、その配下のオブジェクトも一緒に削除します。

ちなみにこのフラグはデフォルトだと false で、省略可能です。

また、ルート階層の「infra」は削除できません。

 

今回は、オブジェクト作成時に使用した JSON を「marked_for_delete: true」にした、

~_delete.json ファイルを用意して、オブジェクトを削除します。

 

それぞれの JSON ファイルで

~_delete.json ファイルを用意して、オブジェクトを削除します。

 

ext-vlan_delete.json をもとにした ext-vlan_delete.json では、

infra 直下のオブジェクトのみ 「marked_for_delete: true」にしてあります。

(infra オブジェクト自体は削除できないため)

例として、編集のあったファイル末尾の内容だけ、tail コマンドで表示します。

$ tail ./ext-vlan_delete.json

        ],

        "transport_zone_path": "/infra/sites/default/enforcement-points/default/transport-zones/4954eeca-decb-487a-8582-b011d60ba19f",

        "resource_type": "Segment",

        "marked_for_delete": false

      },

      "resource_type": "ChildSegment",

      "marked_for_delete": true

    }

  ]

}

 

個人的な JSON ファイル記述方法の工夫として、JSON ファイルでの編集ミス防止箇所のため、

Hierarchical API でオブジェクトの種類を表す「"resource_type": "Child~"」と、

marked_for_delete フラグは、できるだけ各オブジェクトの末尾にセットで記載するようにしています。

 

tier0.json をもとにした tier0_delete.json も、

Tier0 配下に一連ののオブジェクトが収まる階層構造なので

infra 直下の「ChildTier0」でのみ「marked_for_delete: true」にしてあります。

$ tail ./tier0_delete.json

          }

        ],

        "resource_type": "Tier0",

        "marked_for_delete": false

      },

      "resource_type": "ChildTier0",

      "marked_for_delete": true

    }

  ]

}

 

tier1_delete.json は、「Tier0」配下の階層に収まっていないオブジェクトがあり、

複数個所で "marked_for_delete": true の指定が必要になる例です。

階層全体でなく、個々のオブジェクトで marked_for_delete を true にしても削除ができるので、

すこし雑な方法ですが 元の tier1.json ファイルを、sed で一括置換してしまいます。

$ cat  ./tier1.json | sed 's/"marked_for_delete": false/"marked_for_delete": true/g' > tier1_delete.json

$ diff ./tier1.json ./tier1_delete.json

15c15

<         "marked_for_delete": false

---

>         "marked_for_delete": true

18c18

<       "marked_for_delete": false

---

>       "marked_for_delete": true

27c27

<         "marked_for_delete": false

---

>         "marked_for_delete": true

30c30

<       "marked_for_delete": false

---

>       "marked_for_delete": true

56c56

<               "marked_for_delete": false

---

>               "marked_for_delete": true

59c59

<             "marked_for_delete": false

---

>             "marked_for_delete": true

68c68

<               "marked_for_delete": false

---

>               "marked_for_delete": true

71c71

<             "marked_for_delete": false

---

>             "marked_for_delete": true

75c75

<         "marked_for_delete": false

---

>         "marked_for_delete": true

78c78

<       "marked_for_delete": false

---

>       "marked_for_delete": true

97c97

<         "marked_for_delete": false

---

>         "marked_for_delete": true

100c100

<       "marked_for_delete": false

---

>       "marked_for_delete": true

119c119

<         "marked_for_delete": false

---

>         "marked_for_delete": true

122c122

<       "marked_for_delete": false

---

>       "marked_for_delete": true

 

ネットワーク環境の削除。

それではオブジェクトを削除します。

今回は、あらかじめオーバーレイ セグメントは VM の vNIC から外して(別のポートグループを割り当てて)おき、

セグメントのポートがすでにない状態から開始しています。

 

tier1_delete.json を指定して、Tier-1 ゲートウェイと一連のオブジェクトを削除します。

$ curl -ks -u $CRED -H "Content-Type: application/json" -X PATCH -d @./tier1_delete.json https://$MGR/policy/api/v1/infra

 

tier0_delete.json を指定して、Tier-0 ゲートウェイと一連のオブジェクトを削除します。

$ curl -ks -u $CRED -H "Content-Type: application/json" -X PATCH -d @./tier0_delete.json https://$MGR/policy/api/v1/infra

 

ext-vlan_delete.json を指定して、VLAN セグメントを削除します。

$ curl -ks -u $CRED -H "Content-Type: application/json" -X PATCH -d @./ext-vlan_delete.json https://$MGR/policy/api/v1/infra

 

これらの API コールによって、(JSON の内容に問題がなければ)さきほど作成したオブジェクトが削除されます。

処理が完了すると、NSX Manager の Web UI でも、今回の手順開始時と同様にオブジェクト件数がゼロ件になります。

(ブラウザの更新や、「更新」ボタンで画面に反映されるはずです)

nsxt-mgr-obj-03.png

 

オブジェクトの指定によっては、対象オブジェクト同士の参照関係によってエラーになることがありますが、

その場合は少し待つと、(おそらく内部でリトライされて)エラーとなっていたオブジェクトでも削除されたりします。

もしくは、エラーになったオブジェクトを含むコールをリトライすることで、オブジェクトを削除できることがあります。

 

NSX-T の Policy API を利用する場合は、Hierarchical API 形式にすることで、

オブジェクト同士の参照関係を気にする苦労を削減できます。

手順の簡略化や構成管理の面で Hierarchical API 形式のほうが便利かなと思います。

 

ちなみに、いまのところのおすすめ資料は下記かなと思います。

 

NSX Policy API: Getting Started Guide

https://images.nsx.techzone.vmware.com/sites/default/files/PolicyAPI-v1.0.pdf

 

以上、Policy API の Hierarchical API でオブジェクトを作成/削除してみる話でした。

1 2 Previous Next

Actions

Looking for a blog?

Can't find a specific blog? Try using the Blog page to browse and search blogs.