最近のAzure VM は Auto shutdown の機能があって、指定した時間に自動的にシャットダウンしてくれるので手軽にお金を節約できるのですが、IP アドレスも解放するので次に VM を起動するときは IP アドレスが変わっています。DNS を設定している場合は何も問題ありませんが、そうでない場合はIPアドレスを知る手間がかかります。
そういう野良 VM をお持ちの方向けに、VM を起動して IP アドレスを表示してくれるだけの俺得な書き捨てシェルスクリプトを公開します。まあこんなものでも誰かの参考になるかも知れないので。。。
環境
- bashが走る環境 (Unix/Linux/WSL/etc)
- Azure CLI (2.0以上)
- jq (
sudo apt install jq
等でインストール)
スクリプト本体
#/bin/sh
VM=自分のVM名
RG=リソースグループ名
IPNAME=${VM}-ip
IPADDR=`az network public-ip show --name ${IPNAME} -g $RG | jq .ipAddress`
if [ x$IPADDR != xnull ]; then
echo $IPADDR
exit 0
fi
az vm start --name $VM -g $RG
IPADDR=`az network public-ip show --name ${IPNAME} -g $RG | jq .ipAddress`
if [ x$IPADDR = xnull ]; then
echo Failed to start ${VM}.
exit 1
fi
echo $IPADDR
exit 0
完全に自分用なので、VM 名やリソースグループ名はスクリプトに埋め込んで使ってます。引数から取りたければ $1
とか $2
に置き換えてください。エラー処理なんてしてません。
実行すると、VM が起動して IP アドレスがすでに割り当てられていたらそれを表示して終わります。そうでなければ VM をスタートさせ、起動するまで待ってから IP アドレスを取得して終わります。本当にそんだけ。あとはお好みで ssh や mstsc.exe 等の引数に与えてあげれば接続できます。
なお、当然ですが PowerShell 使っても同じ感じでできます。便利ですね。