はじめに #
ここまでMOBをベースに各種Properties,Methodsについて確認してきましたが、以下のような問題に当たることも多いと思います。
- MOBが複雑でどこに何のデータがあるのか分からない。
- MOBでMethodsは確認できたけど、引数に何を入れるべきか分からない。
- 知っているMethodsは使えるけど、新しいMethodsの知識をどうやって仕入れたら良いか分からない。
- 自分でcodeを書いてみたけど、他の人と比較してみたい。
そこで今回はMOB以外でpyvomiでの自動化の手助けをしてくれるような手法を紹介します。あくまで手助けになるので、最終的にはMOBで確認することが重要です。
1. ChatGPT #
基本的にやりたいことがあれば、まずはChatGPTに聞いてみることをお勧めします。 完璧なコードは出力してくれませんが、MOBで確認すべきProperties/Methodsの場所のhintとして非常に有用です。
以前にQiitaで記事を書いたので、是非参考にしてみてください。(本記事では英語で入力していますが、2024年時点では日本語でも全く問題なく回答してくれます。)
https://qiita.com/kato-hiroki-783/items/cd7d61cbcb3af8546940
2. Github Copilot #
こちらもChatGPTベースのAIですがVScodeに統合されており、「code専用にカスタマイズされている点」 + 「codeのsuggestionが超有用」なのでおすすめします。 1600円/月($10/月)かかる点や、業務の関係上導入できない等がネックになりますが、pyvmomiだけではなく全てのcodeを書くときの強い味方になってくれます。
左側にchatUIで質問できるようになり、右側でcodeを書いている際には薄くcodeのsuggestionをしてくれます。
3. vCenterコードキャプチャ #
これはvCenterに標準でついているので、すぐに使えて便利な機能です。公式のdocs
vCenterのメニュー(左上のハンバーガーボタン[≡]) → デベロッパーセンター → コードのキャプチャ → 有効化
言語をpythonにして、「記録の開始」を押すことでGUIで実行した作業をpyvmomiのコードに変換してくれるようになります。
GUI作業後コードのキャプチャまで戻り、「記録の停止」を押すことで以下のようにcodeが出力されます。
#---------------PowerOnMultiVM_Task---------------
vm_0 = search_index.FindByUuid(None, "vm-49", True, True) #SearchIndex
vm = [vm_0]
managedObject.PowerOnMultiVM_Task(vm, None) # Datacenter-datacenter-3
欠点として
- GUIの全ての動作に反応するので長くなる
- どの関数がどの操作に対応しているか分かりずらい
- あくまでGUIで操作したものだけになるので、自分で考えて応用しずらい
部分があります。 これらはMOBや今回紹介する他の方法と併用することで挙動を確かめましょう。
4. pyvmomi-community-samples #
本シリーズでも何回か紹介していますが、pyvmomiにはcommunity-sampleがあり、その中でたくさんの実用例が公開されています。(nicやdiskをVMに追加したり、ova/ovfをdeployしたりなど) 自分のやりたいことが既に実現している場合もあるので一旦覗いてみたり、codeの書き方の参考にすると良いでしょう。
残念ながらcodeの解説はないので、MOBで地道に照らし合わせるか、chatGPTと併用することで理解度が上がり自分のcodeにも適用できるようになると思います。
5. ansible(vmware-guest) #
vSphereの自動化にはpyvmomiの他にもansibleが有名です。 ansibleの自動化の中身は実はpyvmomiで実装されているので、少々難易度が高いですがansibleのvmware_guestも非常に参考になります。
codeは/plugins/modules/***.py
ディレクトリに配置されています。
Ansible Collection for VMware
こちらもcodeをchatGPTやMOBと照らし合わせることで、欲しいPropertiesやMethodsやそのsampleが取得できるでしょう。
おわりに #
いかがでしたでしょうか。本シリーズの1-6回でpyvmomiの基礎的な使い方を確認してもらい、実際の実用例はChatGPTやWEBで確認して実装していくことでpyvmomiを活用できるようになれば嬉しいです。
一旦「pyvmomiで自動化」シリーズは終了しようと思いますが、MOBのsi.content
各種項目や、VM,ESXiの各種項目について、何ができるのかを紹介したい気持ちもあるので、時間ができれば追加していこうと思います。