Power Systems Virtual Server インスタンス状態確認スクリプト


Power Systems Virtual Server サービスで、インスタンスの状態を確認してSlackへ通知する簡易スクリプトを作ってみました。
ご参考まで。


環境

・IBM Cloud Power Systems Virtual Server
  スクリプト変数に APIKEY と CRN(Cloud Resouce Name) 、URL(SlackのWebhook)を使用。
  * APIKEYは"IBM Cloud コンソール => 管理 => アクセス(IAM) => IBM Cloud API キー"から作成して使用します。
  * CRN は "ibmcloud pi service-list" コマンドを実行して出力される"ID"で確認が可能です。
  * 使用しているリソースグループ名がスクリプト内で指定が必要です。
  * 通知先の SlackWebhook は以下を参照して作成しておきます。
    ご参考:Slack での Incoming Webhook の利用

・スクリプトの実行場所 : Local Mac (or インターネット接続可能な Linux 環境)
  * ibmcloud コマンド導入済み
  * ibmcloud power-iaas plugin が導入済み
    ご参考:IBM Power Systems Virtual Server CLI Reference


スクリプトは以下です。
ご使用の環境に合わせて、 "< >" 内を環境に合わせてご変更ください。

powervs_check_instance.sh
#!/bin/bash

## ibmcloud cli download
#curl -fsSL https://clis.cloud.ibm.com/install/linux | sh > /dev/null   <= Linux環境でibmcloud コマンドのダウンロードに使用

## login

export APIKEY="<使用するapikeyを入力>"
ibmcloud login --apikey $APIKEY -r jp-tok -g <resouce group名を入力> -f > /dev/null

export CRN="<ご使用のCRN(Cloud Resource Name)>"
ibmcloud pi service-target $CRN > /dev/null

## get instance information

rm instances.txt result.txt > /dev/null 2>&1
touch instances.txt result.txt > /dev/null

echo `date` > result.txt

ibmcloud pi ins | awk '{print $2}' | grep -v instances | grep -v Name > instances.txt

## check instance status

while read INSTANCE
do
 ibmcloud pi in "$INSTANCE" > "$INSTANCE"
 echo "#-------------------------------------------------------------------------------------------------------------#" >> result.txt
 grep ^Name "$INSTANCE" >> result.txt
 grep ^Status "$INSTANCE" >> result.txt
 echo "#-------------------------------------------------------------------------------------------------------------#" >> result.txt
 rm "$INSTANCE"
done <instances.txt

MESSAGE=`cat result.txt`

## post to slack

URL="<Slack Webhook URLを入力>"

curl -X POST --data-urlencode "payload={\"username\": \"PowerVS status check\",  \"text\": \"IBM Cloud PowerVS_Status Check: \\n ${MESSAGE}\", \"icon_emoji\": \":cloud:\"}" $URL

rm instances.txt
rm result.txt

exit 0

実行結果
$ sh powervs_check_instance.sh
$

Slack には次のように出力されます。


参考

Power Systems Virtual Server のご参考資料:Power Systems Virtual Server Hint&Tips

以上です。