Contents
VMware ESXiやvCenterをスクリプトで操作するにはPowerCLIやSDKがあります。スクリプトを組むことで自動化や値の取得、監視が可能になります。
ここでは、SDKのvSphere SDK for PerlをCentOSにインストールしてみようと思います。
vSphere SDK for Perl
環境
項目 | バージョン |
---|---|
CentOS | 7.2 64bit |
Perl SDK | 6.0.2 |
ダウンロード
(1) 以下のサイトからPerl SDKをダウンロードします。
※ログインが必要です。アカウント作成は無料です。
インストール
パッケージのインストール
(1) 必要なパッケージをインストールします。
1 2 |
[root@localhost ~]# yum -y install perl openssl-devel cpan gcc libuuid-devel libxml2-devel expat-devel |
モジュールのインストール
(1) cpanの初期設定をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@localhost ~]# perl -MCPAN -e shell (snip) Would you like to configure as much as possible automatically? [yes] (snip) What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] (snip) Would you like me to automatically choose some CPAN mirror sites for you? (This means connecting to the Internet) [yes] no (snip) Would you like to pick from the CPAN mirror list? [yes] no Please enter your CPAN site: [] http://ftp.riken.jp/lang/CPAN/ Enter another URL or ENTER to quit: [] (snip) Would you like me to append that to /root/.bashrc now? [yes] (snip) cpan[1]> quit |
(2) Perlモジュールをインストールします。
ExtUtils::MakeMakerはバージョン 6.96
をgithubからダウンロードしてインストールします。
1 2 3 4 5 6 7 8 9 10 |
[root@localhost ~]# cpan -i CPAN::Meta::YAML [root@localhost ~]# cpan -i CPAN::Meta [root@localhost ~]# cpan -i File::Copy::Recursive [root@localhost ~]# cpan -i JSON::PP::Compat5006 [root@localhost ~]# curl -L https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/archive/v6.96.tar.gz -O [root@localhost ~]# tar zxvf v6.96.tar.gz [root@localhost ~]# cd ExtUtils-MakeMaker-6.96/ [root@localhost ExtUtils-MakeMaker-6.96]# perl Makefile.PL [root@localhost ExtUtils-MakeMaker-6.96]# make && make test && make install |
Module::Buildはバージョン 0.4205
をgithubからダウンロードしてインストールします。
1 2 3 4 5 6 7 8 9 10 11 |
[root@localhost ~]# cpan -i ExtUtils::CBuilder [root@localhost ~]# cpan -i Archive::Tar [root@localhost ~]# cpan -i Digest::MD5 [root@localhost ~]# cpan -i Path::Tiny [root@localhost ~]# cpan -i Pod::Readme [root@localhost ~]# curl -L https://github.com/Perl-Toolchain-Gang/Module-Build/archive/0.4205.tar.gz -O [root@localhost ~]# tar zxvf 0.4205.tar.gz [root@localhost ~]# cd Module-Build-0.4205/ [root@localhost Module-Build-0.4205]# perl Makefile.PL [root@localhost Module-Build-0.4205]# make && make install |
Module::Buildを make test
すると以下のエラーが発生します。
バグくさい?
比較対象文字が testing
で返ってくる文字列が stable
になっているからエラーになるみたい。
1 2 3 4 5 6 |
t/properties/release_status.t .. 3/? # Failed test 'dotted alpha version has release_status 'testing'' # at t/properties/release_status.t line 78. # got: 'stable' # expected: 'testing' |
cpanを使ってモジュールをインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@localhost ~]# cpan -i Devel::StackTrace [root@localhost ~]# cpan -i Class::Data::Inheritable [root@localhost ~]# cpan -i Convert::ASN1 [root@localhost ~]# cpan -i Crypt::OpenSSL::RSA [root@localhost ~]# cpan -i Crypt::X509 [root@localhost ~]# cpan -i Exception::Class [root@localhost ~]# cpan -i UUID::Random [root@localhost ~]# cpan -i Archive::Zip [root@localhost ~]# cpan -i Path::Class [root@localhost ~]# cpan -i Crypt::SSLeay [root@localhost ~]# cpan -i Fatal [root@localhost ~]# cpan -i Class::MethodMaker [root@localhost ~]# cpan -i UUID [root@localhost ~]# cpan -i XML::SAX [root@localhost ~]# cpan -i XML::LibXML::Common [root@localhost ~]# cpan -i Socket6 [root@localhost ~]# cpan -i IO::Socket::INET6 [root@localhost ~]# cpan -i Net::INET6Glue [root@localhost ~]# cpan -i SOAP::Lite [root@localhost ~]# cpan -i MIME::Base64 |
LWPはバージョン 5.837
をgithubからダウンロードしてインストールします。
依存関係で HTML::Parse
と URI
はすでに入っているかもしれませんが一応書いておきます。
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# cpan -i HTML::Parser [root@localhost ~]# cpan -i URI [root@localhost ~]# cpan -i Data::Dump [root@localhost ~]# curl -L https://github.com/libwww-perl/libwww-perl/archive/libwww-perl/5.837.tar.gz -O [root@localhost ~]# tar zxvf 5.837.tar.gz [root@localhost ~]# cd libwww-perl-libwww-perl-5.837/ [root@localhost libwww-perl-libwww-perl-5.837]# perl Makefile.PL [root@localhost libwww-perl-libwww-perl-5.837]# make && make test && make install |
SDKのインストール
(1) アーカイブを解凍します。
1 2 |
[root@localhost ~]# tar zxvf VMware-vSphere-Perl-SDK-6.0.0-3561779.x86_64.tar.g |
(2) インストーラーを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[root@localhost ~]# ./vmware-vsphere-cli-distrib/vmware-install.pl (snip) Press enter to display it. # エンターを押す (snip) Do you accept? (yes/no) yes # Licenseに同意 (snip) This vSphere CLI installer includes precompiled Perl modules for RHEL. Answering yes will install the precompiled modules, and answering no will install from CPAN. Do you want to install precompiled Perl modules for RHEL? [yes] no (snip) [/usr/bin] # インストール先指定 (snip) The following Perl modules were found on the system but may be too old to work with vSphere CLI: LWP::Protocol::https 5.805 or newer Socket6 0.23 or newer Enjoy, --the VMware team |
ここで LWP::Protocol::https
が表示されるのはバージョンが引っ張ってこれ無いため。
Socket6
もインストールしているので無視。
動作テスト
(1) ここでは、ESXiに接続してみます。以下のスクリプトはログイン、ログアウトのみ実行します。
1 2 3 4 5 6 7 |
[root@localhost ~]# /usr/lib/vmware-vcli/apps/general/connect.pl --server 192.168.1.1 Enter username: root Enter password: Connection Successful Server Time : 2016-07-22T12:11:34.975041Z |
または
1 2 3 4 5 |
[root@localhost ~]# /usr/lib/vmware-vcli/apps/general/connect.pl --server 192.168.1.1 --username root --password password Connection Successful Server Time : 2016-07-22T12:12:07.142217Z |
(2) 直近のESXiのCPU状況を表示してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@localhost ~]# /usr/lib/vmware-vcli/apps/performance/viperformance.pl --server 192.168.1.1 --countertype cpu --host esxi-01 --samples 1 Enter username: root Enter password: Performance data for: esxi-01 Counter: Utilization Instance : Description: CPU utilization as a percentage during the interval (CPU usage and CPU utilization might be different due to power management technologies or hyper-threading) Units: % Sample info : 20,2016-07-22T12:22:40Z Value: 309 Counter: Idle Instance : Description: Total time that the CPU spent in an idle state Units: ms Sample info : 20,2016-07-22T12:22:40Z Value: 155272 (snip) |
最後に
Perl SDKを使って必要なものだけを取得するコードを自作すればZabbixなどで値を取り込んで監視や自動化ができます。
標準の機能で足りない部分はSDKを使って補うことも可能ですね 🙂
(標準でインストールした場合)サンプルスクリプトは /usr/lib/vmware-vcli/
配下にあります。
Perl SDK 便利です 🙂