vmware
Python3
pyvmomi

pyvmomiでGuestOSのファイル操作をするツールを作ってみた

More than 1 year has passed since last update.

ネットワークが繋がっていなかったり、接続に限りがある状態で対象仮想マシンに対してファイルのアップロードやダウンロードが出来ないか確認したところ fileManager を使って出来たのでツールを作ってみました。

vmware-guest-file-operation

https://github.com/sky-joker/vmware-guest-file-operation

使い方

ファイルをダウンロード

centos という仮想マシン内にある output.txt というファイルをダウンロードして hoge.txt というファイル名で保存した時の例です。

$ ./vmware-guest-file-operation.py -vc vcenter01.local -tvm centos -gu root download -dpth /root/output.txt -spth hoge.txt
vCenter Password:
Guest OS Password:
file download success.

ファイルが保存されたか確認します。

$ ls
hoge.txt

ファイルをアップロード

centos という仮想マシン内へ requirements.txt をアップロードして /root/requirements として保存した時の例です。

$ ./vmware-guest-file-operation.py -vc vcenter01.local -tvm centos -gu root upload -upth ./requirements.txt -spth /root/requirements
vCenter Password:
Guest OS Password:
file upload success.

アップロードしたファイルが保存されたか確認します。

$ ls
requirements

仕組み

fileManager オブジェクトの InitiateFileTransferFromGuest(ファイルをdownload) または InitiateFileTransferToGuest(ファイルをupload) メソッドに仮想マシンのオブジェクトやGuestOSの認証情報、ファイル情報を渡すとアクセス可能なURLを発行してくれます。
URLはvCenterのもので、やりとりするファイルはvCenter経由で行われます。
vCenter内ではGuestOSのVMware toolsと連携してファイルのやりとりが行われます。
ここでは、発行されたURLに対して requestsgetput をしてファイルのやりとりをしています。
そのため、大量に処理をするとvCenterに負荷がかかることが懸念されます。

最後に

今まで、ネットワークが繋がっていない構築中・検証環境の仮想マシンにフィアルのアップロードしたりするのが面倒でしたがひとまずこれで対応できそう :grin:
PowerCLIだと、Windows用意しなくてはいけなかったけどpythonで実装できたからLinuxでも大丈夫になった :grin: