LoginSignup
2
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-17

ネットワークが繋がっていなかったり、接続に限りがある状態で対象仮想マシンに対してファイルのアップロードやダウンロードが出来ないか確認したところ 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:

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2