vmware_*infoやfactsのpropertiesについて


この投稿はAnsible 2 Advent Calendar 2019(通称裏アドベントカレンダー?)の9日めの記事です。
1週間全部俺の2回目です!

今回のネタはVMware環境の情報を収集するfactsやinfoモジュールの一部に実装されている properties について紹介します。
propertiesを使うと何がいいかと言うと、自分の取得したい情報を自由に取得することが可能です。
ここではvmware_guest_infoを例にして説明します。

通常実行

propertiesを指定しないで通常実行してみましょう。

実行してみます。

propertiesを指定しない場合は、このようにモジュールで定められた標準項目のみが取得できます。
ただ、運用しているとこれだけの情報だけでは足りない時があります。
そこで標準項目外のものを取得したい場合はpropertiesパラメーターを使用します。

propertiesを使う

propertiesを使う場合はschemaにvsphereを指定してpropertiesに取得したい対象のプロパティを指定します。
ここではconfigオブジェクトのいくつかのプロパティを取得してみます。

実行してみます。

指定したプロパティの情報が取得できたのが確認できます 🙂

propertiesって何が指定できるの?と思った方がいるかもしれないので簡単に説明したいと思います。
VMwareモジュールはSOAP APIを使ってやりとりをしており、VMなどはオブジェクトとして扱います。
次のようなイメージです。

オブジェクトにはプロパティが存在しているので、そのオブジェクトのプロパティの階層をpropertiesに指定してあげれば値が取得できます。
6.7の全プロパティについては以下を参照してください。

とは言っても、オブジェクトはオブジェクトの中にオブジェクトが存在するネスト構造なので複雑です。
実際に開発している人はピンときますが、それ以外の人がドキュメント見ただけでは「なるほど。よくわからん」になるかもしれません。

どうすればいいってのさ

と、言うことで一先ず簡単に階層のイメージができるよう次のツールを使ってみます。

インストール方法は上記ページを参照してください。
一先ず実行してVM01の仮想マシンのconfig情報を見てみます。

これを見るとconfigオブジェクトのnameプロパティには VM01 が存在します。
また guestFullName プロパティには CentOS 7 (64-bit) が存在します。
なのでpropertiesでこの情報を取得したい場合は

となるわけです。
他にも見てみましょう。以下はsummaryオブジェクトの中身を表示しています。

例えば、VMware Toolsのステータスを取得したい場合は

となるわけです。
こんな感じで標準では取得できないものも拡張して取得することができます。

応用編

これを使うと何がうれしいかというと次のようなレポートが作れます。

また、CMDBへの情報登録用や棚卸用のレポート、既存の設定確認などでも使えます。
便利ですね 🙂
是非使ってみてください。

と、言うことで2回目は以上です!次!

Leave a Reply

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

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