


vSphere Management Assistant 5からサーバーの物理シリアルポート経由でUPSの認識ができたので、次は電源喪失時のシャットダウンスクリプトshutdownHostViaSOAPAPICall.plの導入です
shutdownHostViaSOAPAPICall.pl for ESX(i) licensed and free version
http://communities.vmware.com/docs/DOC-11623
これはsshでshutdown命令を送るのではなくVI API(SOAP)を経由して外部PCやゲストOSからESXiにshutdown命令を送るもののようでPerlで作られたスクリプトです
まず、仮想OSがホストからのシャットダウン命令によってシャットダウン開始になるように設定します
[構成]-[ソフトウェア]-[仮想マシン起動/シャットダウン]-[プロパティ]
から[ゲスト シャットダウン]を選択します
- shutdownHostViaSOAPAPICall.plのDownload
- shutdownHostViaSOAPAPICall.plの編集
- shutdownHostViaSOAPAPICall.pl用ホストファイルの作成
- /etc/apcupsd/apccontrolの編集
wgetでshutdownHostViaSOAPAPICall.plをダウンロードします
vi-admin@vma5:~> wget http://communities.vmware.com/servlet/JiveServlet/download/11623-3-32693/shutdownHostViaSOAPAPICall.pl
–2012-04-24 20:31:20– http://communities.vmware.com/servlet/JiveServlet/download/11623-3-32693/shutdownHostViaSOAPAPICall.pl
Resolving communities.vmware.com… 118.155.230.73, 118.155.230.64
Connecting to communities.vmware.com|118.155.230.73|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 5248 (5.1K) [application/octet-stream]
Saving to:shutdownHostViaSOAPAPICall.pl'
100%[======================================>] 5,248 --.-K/s in 0.01s
2012-04-24 20:31:20 (370 KB/s) - shutdownHostViaSOAPAPICall.pl’ saved [5248/5248]
vi-admin@vma5:~> ls -l
total 20
-rw-r–r– 1 root root 1922 2012-04-24 20:13 apctest.output
drwxr-xr-x 2 vi-admin root 4096 2012-03-06 23:06 bin
-rw——- 1 vi-admin root 5248 2012-04-21 11:33 shutdownHostViaSOAPAPICall.pl
drwx—— 2 vi-admin root 4096 2012-04-24 17:52 work
shutdownHostViaSOAPAPICall.plで2カ所編集を行います。my $host_usernameとmy $host_passwordにシャットダウンしたいESXiサーバのユーザー名とパスワードを設定します
vi-admin@vma5:~> vi shutdownHostViaSOAPAPICall.pl
#!/usr/bin/perl -w
# William Lam
# 12/10/2009
# http://engineering.ucsb.edu/~duonglt/vmware/
# http://communities.vmware.com/docs/DOC-9852use strict;
use warnings;
use Term::ANSIColor;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;
use Data::Dumper;# Please fill out the
# username and password
# for your ESX(i) host
my $host_username = ‘fillmein’;
my $host_password = ‘fillmein’;#### DO NOT EDIT PAST HERE ####
(snip)
シャットダウンするホストの一覧を記載したリストを作成します。ホストリストはホスト名かIPで指定して複数台の記述ができます
vi-admin@vma5:~> vi hostlist
vma5.rootlinks.net
電源喪失時に一定時間経過してシャットダウン処理が開始される時に実行されるスクリプトapccontrolからshutdownHostViaSOAPAPICall.plを呼び出すように書き換えます
vi-admin@vma5:~> cd /etc/apcupsd/
vi-admin@vma5:/etc/apcupsd> sudo cp apccontrol apccontrol.org
vi-admin’s password:
vi-admin@vma5:/etc/apcupsd> ls
apccontrol apcupsd.conf commfailure hid-ups offbattery
apccontrol.org changeme commok make-hiddev onbatteryvi-admin@vma5:/etc/apcupsd> sudo vi apccontrol
# These variables are needed for set up the autoconf other variables.
#
prefix=/usr
exec_prefix=/usrAPCPID=/var/run/apcupsd.pid
APCUPSD=/sbin/apcupsd
SHUTDOWN=/sbin/shutdown
SCRIPTSHELL=/usr/bin/sh
SCRIPTDIR=/etc/apcupsd
WALL=wallESXiShutdown=/home/vi-admin/shutdownHostViaSOAPAPICall.pl
ESXiHost=/home/vi-admin/hostlist
(snip)
doshutdown)
echo “Esxi Host initiated Shutdown Sequence” | ${WALL}
${ESXiShutdown} ${ESXiHost}
echo “UPS ${2} initiated Shutdown Sequence” | ${WALL}
${SHUTDOWN} -h now “apcupsd UPS ${2} initiated shutdown”
;;
取り敢えずこれで上手くいくのではないでしょうか…. 🙂 動作試験は週末にでもやってみます
ルートリンクス様
始めまして、柏と申します。
当方も貴殿同様、ESXi5とvMAを使用してUPSの電源管理をしておりますので、大変参考になります。
記載されているのとほぼ同等の方法で、ホストOSをシャットダウン仕様と思っておりますが、認証エラーになってしまいシャットダウンスクリプトが動作しない状況です。
もし、何かお分かりになることがございましたら、ご教示いただきたくよろしくお願いいたします。
下記に、当方の環境を記載します。
サーバー:VMwareESXi5.0Update1
vMA :vMA5.0Update1
ゲストOS:RedHat、WindowsServer2008など
やり方は、同じで、UPSの状態を監視(ネットワークにて)を行い、停電が発生したら、vMAよりホストOSをシャットダウンします。
ホストOSをシャットダウンするスクリプトは、perlで記述し管理ソフトから呼び出しを行います。
ESXi5.0+vMA5.0の時は、上手く言っていたのですが、Update1にしてから、認証のエラー
500 Can’t connect to http://www.???.co.jp (certificate verify failed)
となってしまいます。
ESXiにデフォルトで搭載されているSSL証明書は一意であるので、エラーになってもしょうがないと思い、GeoTrust社よりSSL証明書を購入しESXi5.0内にインストールをし再試行を実施しましたが、結果は一緒でした。
vMA内のルート証明書が合っていないのかと思いますが、更新の仕方がわからないのです。(この辺がわかると助かります)
ちなみに、ESXi5.0Update1にSSL証明書をインストールできたかどうかは、別なPCからアクセスしてSSL証明書を表示して正しくなっているので、大丈夫だと思います。
幾つかのHPには同じようなエラーの事例が載っていますが、
5.0のダウングレード
SSL認証をしない設定
などは、載っていましたが、正しくSSL認証を使用した方法が無かったのです。
お忙しいとは思いますが、お分かりになる事がございましたら、よろしくお願いいたします。
柏
先日コメントを頂いたkashiwa様
メールを送ったのですがエラーで返ってきました。
当方からだとそちらのメールサーバに接続するとConnection closed by foreign host.になります。なんでしょうね?
初めまして、浜と申します。
ESXi 5.5 + vMA 5.5 + apcupsd で電源管理をしたく、参考にさせて頂いて頂きました。
上にある、kashiwaさんの書き込みにもあるように私の環境でも
shutdownHostViaSOAPAPICall.pl
を実行すると、
An Error Occurred
500 Can’t connect to 192.168.xxx.xxx:443 (certificate verify failed)
の様にエラーが発生しました。
私の場合、下記方法で解決しましたの書き込みさせて頂きます。
ネットで検索したところ、perlスクリプトより正規のSSL証明書を利用しないSSL接続の際に
制限があるそうです。
解決策の一つとして私が選んだ方法は、
shutdownHostViaSOAPAPICall.pl
に、
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;
を追記する事で解決しました。
既にFAQな情報であれば、お許し下さい。
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
はじめまして、浜さん
貴重な情報有難う御座います
オヤジの健忘録的なBlogですが参考にして頂けるのは嬉しいです
これからも宜しくお願い致します
matsuoka 様
こんにちは、浜です。
改めて自分が書いた文章を読むと誤字脱字だらけで、お恥ずかしい限りです。