VMware VIX を使って仮想マシンを色々操作してみる 2
VMware VIX にあるperlのAPIを使ってみます。
CやPerlのAPIは別途コンパイルしてあげないといけないのでコンパイルします。インストール先にアーカイブがありますので展開して make && make install します。
$ gzip -cd /usr/lib/vmware-vix/vix-perl.tar.gz | tar xvf - $ cd vix-perl/ $ perl Makefile.PL $ make $ sudo make install
これで終わりです。Perlだとこんな感じで仮想マシンのsnapshotを取得できます。*1
#!/usr/bin/perl use strict; use warnings; use DateTime; use VMware::Vix::Simple; use VMware::Vix::API::Constants; my $now = DateTime->now( time_zone => 'local' ); my $err = VIX_OK; my $hostHandle = VIX_INVALID_HANDLE; my $vmHandle = VIX_INVALID_HANDLE; my $snapshotHandle = VIX_INVALID_HANDLE; my %vix = ( 'url' => "https://myesxserver/sdk", 'u' => "user", 'p' => "password", 'vmx' => "[data1] CentOS5.3/CentOS5.3.vmx", ); ($err, $hostHandle) = HostConnect(VIX_API_VERSION, VIX_SERVICEPROVIDER_VMWARE_VI_SERVER, $vix{'url'}, # hostName 0, # hostPort $vix{'u'}, # userName $vix{'p'}, # password 0, # options VIX_INVALID_HANDLE); # propertyListHandle die "HostConnect() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK; ($err, $vmHandle) = VMOpen($hostHandle, $vix{'vmx'}); die "VMOpen() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK; $err = VMPowerOn($vmHandle, VIX_VMPOWEROP_LAUNCH_GUI, # powerOnOptions VIX_INVALID_HANDLE); # propertyListHandle die "VMPowerOn() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK; # Create snapshot in powered-on state. ($err, $snapshotHandle) = VMCreateSnapshot($vmHandle, $now, # name undef, # description VIX_SNAPSHOT_INCLUDE_MEMORY, # options VIX_INVALID_HANDLE);
*1:リファレンスのサンプルコードのパクリです