Ansibleを使ってVMware ESXiのプロダクト、バージョン、ビルド番号、パッチ番号を取得する


運用でESXiのホストのバージョンやビルド番号、パッチ番号を本番環境から取得したい時があったりします。
ホストが多いと流石に手動で確認するのは辛いのでPowershellなどでツールを作ってcsvやExcelにまとめたりする自動ツールを作る人が多いのかなと思います。

最新版の vmware_host_facts では、その情報も取得できるパッチをマージしてもらっていて、使えるのがAnsible 2.10からだと思っていたのですが、おそらくVMwareのCollectionsが出てから使えるようになりそうです。
そこでここでは、一先ず devel のAnsibleを使ってVMware ESXiのプロダクト、バージョン、ビルド番号、パッチ番号を取得する方法について紹介します。

環境

項目 バージョン
CentOS 7.5.1804
Python 3.6.8
Ansible 2.10.0.dev0

Ansibleインストール

develリポジトリをクローンしてAnsibleをインストールします。

venvを作成して環境を構築します。

これで準備が整いました。

Playbook作成

以下のPlaybookを作成します。

vars の値は変更してください。

新しい vmware_host_facts では schemaproperties パラメーターが追加されています。
このパラメーターを使う事でESXiオブジェクトの任意のプロパティを取得できます。
ここではconfigデータオブジェクトの productoption を取得します。
productのオブジェクトにはプロダクト、バージョン、ビルド番号が含まれています。
パッチ番号はoptionにありますが、optionはリストになっているので対象のキー(Misc.HostAgentUpdateLevel)の情報を取得するためループで回します。
そして、最後に情報をdebugで出力してみます。

Playbook実行

Playbookを実行します。

こんな感じで情報を自動で取得できます 🙂
Jinja2でレポート用テンプレートを作っておけば自動で棚卸とかもできそうですね。
(ちなみにやり方はvmware_host_factsモジュールのEXAMPLEの方にも書いたりしています)

参考

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください