ブログ内検索
IPM2でスクリプトを使ったシャットダウン手順を解説します。
はじめに
IPM2の基本設定(IP設定、ライセンス適用、UPS検出など)は済んでいる前提で話が進みます。予めご了承ください。
この検証について
この記事では、Windows Server 2022のHyper-V上に構築したIPM2から、SSH接続でWindows Server 2022内のスクリプトを実行する方法を解説します。
実行させるスクリプトはあくまで検証のために用意したものですので、実装の際は適宜環境に合わせたスクリプトを用意していただくようお願いします。
スクリプトシャットダウンの概要
- IPM2に実行させたいスクリプトを接続先ホスト(今回はWindowsServer2022)内に作成します。
- 接続先ホストでSSHを有効化します。
- IPM2から接続先ホストへのSSH接続をテストします。
- IPM2でスクリプトを実行するオートメーション設定を行います。
実行させるスクリプトについて
今回実行させるスクリプトは、c:\work\script.batです。
このスクリプトは、以下3つのbatファイルを順番に実行します。
- DateTime.bat (コンピュータ名と実行した日付時刻をテキストに出力するbatファイル)
- ipconfig.bat (ipconfig /all の結果をテキストに出力するbatファイル)
- system_off.bat (システムシャットダウンを行うbatファイル)
1と2の出力先フォルダは、接続ホストの「c:\work\test-folder」です。
また、c:\workフォルダは以下のような構成です。
c:\work\script.batは以下の記載内容としています。
OpenSSH サーバーの有効化
IPM2仮想マシンがホストのWindowsにSSH接続できるように、OpenSSH サーバー機能を有効化します。
詳しくは、マイクロソフトの手順をご確認ください。
https://learn.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse
[設定] を開き、 [アプリ] > [アプリと機能] の順に選んで、 [オプション機能] を選択します。
OpenSSH サーバーをインストール済みの状態にします。
IPM2からの接続先ホストへのSSH接続テスト
TeraTermなどのターミナルソフトを起動して、IPM2へSSH接続します。
ユーザ名とパスワードを入力すると、IPM2のコンソールに接続できます。
接続したIPM2のコンソールにて、「ssh -l “接続先ホストのユーザ名” ”接続先ホストのIPアドレス”」を入力します。
パスワードの入力が求められるので、ユーザ名に対応したパスワードを入力します。
SSHログインに成功すると、接続先ホストのホスト名、ログインしたユーザ名が表示されます。
IPM2でのオートメーション設定
IPM2にログインし、「オートメーション」ー「新規作成」ー「オートメーション」を選択します。
「自動化名」の欄で自動化設定に名前を付けることができます。(この記事ではデフォルトのままとします。)
「トリガーの挿入」ー「電力の問題」を選択します。
UPSに電源障害があった際に今回のシャットダウンスクリプトを実行したいので、
「UPSのAC停電」を選択して、「次のページ」を選択します。
パワーソースとするUPSを選択して、「終了」を選択します。
ここでUPSを2台選択すると、どちらかのUPSに障害があった際に自動化設定(オートメーション)が実行されます。
どちらか1台のみを選択した場合、選択したUPSに障害があった際に自動化設定(オートメーション)が実行されます。
また、UPSを複数選択して「選択したすべてのデバイスがトリガーされた場合のみ動作します」にチェックを入れると、選択した複数のUPSすべてに障害があった際に自動化設定(オートメーション)が実行されます。
[選択したUPSがAC停電した時]を条件とするトリガーができました。
UPSのAC停電があったときすぐに実行されてしまうと、瞬断の場合でもシャットダウン処理が開始されてしまう可能性があります。
そのため、一定時間(30秒間)経過してもAC停電のままであればシャットダウン処理を実行するように「遅延タイム」と「初期トリガーの確認」を挿入します。
「遅延タイム」を選択します。
待機時間(秒)に「30」と入力し、「終了」を選択します。
アクションの1番目に待機時間(いわゆるシャットダウンタイマー)が追加されました。
次に「初期トリガーの有効性チェック」を選択します。
待機時間経過後にトリガーの条件が今も有効かどうかのチェックを行います。
無効だった場合(UPSが停電から回復している場合)、これ以降のアクションに進ませたくありません。オートメーション(自動化)を終了するように設定します。
「自動化を終了します。」を選択し、「終了」を選択します。
アクションの2番目に「トリガー条件を確認して満たしていなかったら、オートメーションを終了する」アクションが追加されました。
次に、「ITアクション」を選択します。
「サーバアクション」を選択し、「次のページへ」を選択します。
「SSH」を選択し、「次のページ」を選択します。
「サーバのホスト名」と「サーバのポート」を入力します。
「Credential」欄から「新しいクレデンシャルを追加する」を選択します。
以下のように入力し、「保存」を選択します。
クレデンシャルタイプ:ユーザとパスワード
クレデンシャル名:任意
クレデンシャルの種類:ユーザースクリプト
タグ付けする:任意
ユーザ:接続先ホストへのログインユーザ
パスワード:接続先ホストへのログインユーザに対応したパスワード
クレデンシャル情報を保存する際に、パスワードの入力を求められます。
IPM2のパスワードを入力し、「確認」を選択します。
「Credential」欄の選択画面に戻るので、新しく追加されたクレデンシャル情報を指定します。
指定したクレデンシャル情報で接続先ホストにログインできると、以下のようなメッセージが画面下部に表示されます。
次に、「SSHコマンド」欄に接続先ホストで実行したいスクリプトのパスを入力し、「次のページへ」を選択します。
アクションを実行した結果、何かしらの原因でエラーが返ってきた場合、自動化を続行するのか、それとも終了するのかを選択します。※基本的に「初期トリガーの有効性チェック」アクションの時は終了。「初期トリガーの有効性チェック」以外のアクションは続行を選択します。
また、このアクションを抜けるタイムアウト値(秒)も入力し、「終了」を選択します。
これで、「トリガー」と「アクション」が完成したので「保存」を選択します。
追加したアクションはデフォルトでは無効化(INACTIVE)になっているため、ボタンをクリックして有効化(ACTIVE)にします。
これで、UPSが30秒間バッテリー運転したら、IPM2がWindowsにSSH接続してスクリプトを実行する設定ができました。
シャットダウンテスト
シャットダウンを行う前の状態が以下の画面です。スクリプトで生成されるテキストファイルがこの時点では生成されていません。
パワーソースとしたUPSの電源供給を切り、電源障害を発生させます。IPM2のコンソール上にアラームが表示されました。
IPM2のオートメーションが実行されました。
オートメーションの実行履歴を確認すると、SSH接続で接続先ホストのスクリプトを実行できたことを確認します。
その間、接続先ホストではシャットダウンが開始されました。
再度、パワーソースとしたUPSの電源供給を復旧させ接続先ホストの電源を投入します。
接続先ホストの「C:\Work\Test-folder」を確認すると、batファイルで生成されたテキストファイル2つが確認できました。
これで、IPM2から接続先ホストに対するシャットダウンスクリプトを用いたシャットダウン処理が行えるようになりました。
おわりに
TwitterとYouTubeでEaton UPSの情報を配信しております。よろしくお願い致します。
Twitter : https://twitter.com/eaton_daitron
YouTube : https://www.youtube.com/user/EatonDaito
- カテゴリー