さくらのクラウドのCLIツール(usacloud)でメンテ対象のストレージに紐づくインスタンスを調べる

# 概要

[こんな感じ](https://support.sakura.ad.jp/mainte/mainteentry.php?id=29308&_gl=1*1c6nz5w*_gcl_aw*R0NMLjE2MTc2NzY0NTguQ2p3S0NBanc2cXFEQmhCLUVpd0FDQnM2eDNfcllvaUdyR0YwdkdCQ0NjUlZ2dlNmdXRUMmR5cmdNWWx0NmxRanJTY0Rxa3BXVHYwZDJSb0MxRlVRQXZEX0J3RQ..&_ga=2.260427151.344685335.1622611424-1413212065.1565137259)でたまにストレージ機器がメンテナンスになる時があって
自分のどのインスタンスがちょっとしたI/O遅延の影響を受けるのか知りたい時に
usacloudというCLIツールを使って出来るだけささーっと調べられるようにする記事。

# なんでこの記事を書いたのか

メンテナンスの告知には、

```
影響範囲 : さくらのクラウド 東京第1ゾーン SSDプランディスクの以下ストレージ
              sac-tk1a-iscsi5-st11
              sac-tk1a-iscsi5-st12
```
って感じでストレージ機器の名前が乗っているけど、自分のインスタンスがその機器に
関係あるのか無いのかインスタンスがたくさんあると調べるのが大変なので出来るだけ楽に調べたいと思った。

サーバが断するわけではないので、気にしなくてもいいんだけど、何だか気になるので知りたい。

# 前提

- usacloudは使える状態になっている  
usacloudのリポジトリ: https://github.com/sacloud/usacloud  
インストール方法などのドキュメント: https://docs.usacloud.jp/usacloud/installation/start_guide/
- さくらのクラウドのAPIキーは取得してusacloudに設定済み  
APIキーの発行方法: https://manual.sakura.ad.jp/cloud/api/apikey.html
- usacloud disk ls --zone=all って打つと以下みたいな表示になる
serverの列とStorageの列にてどのインスタンスがどのストレージ機器に関係しているのかが見て取れる。

```shell
$ usacloud disk ls --zone=all
+------+--------------+----------------------+------+------------------------------------+------+------+------------+-----------------------+-----------------------+
| Zone |      ID      |         Name         | Tags |               Server               | Plan | Size | Connection |        Storage        |      Description      |
+------+--------------+----------------------+------+------------------------------------+------+------+------------+-----------------------+-----------------------+
| is1b | 112xxxxx6xxx | storage_dockerSRV     | -    | 11290xxxxx28(dockerSRV)            | ssd  | 20GB | virtio     | sac-is1b-ssd20g-st201 | dockerSRVのストレージ |
| is1b | 11xxxx250563 | myvpn                | -    | 1131002xxxxx(myvpn)                | ssd  | 20GB | virtio     | sac-is1b-ssd20g-st214 | -                     |
| is1b | 113200xxxxx6 | jupyter-notebook-srv | -    | xxxxx0343404(jupyter-notebook-srv) | ssd  | 20GB | virtio     | sac-is1b-ssd20g-st211 | -                     |
| is1b | xxxxxxxxx115 | go-train             | -    | 11320xxxxx13(golang_django_train)  | ssd  | 20GB | virtio     | sac-is1b-ssd20g-st02  | -                     |
+------+--------------+----------------------+------+------------------------------------+------+------+------------+-----------------------+-----------------------+
```

# やってみる

## メンテナンス告知からストレージ機器をコピペして一覧を作る

mainte_listというファイルを作ったとする。内容は以下。

```shell
$ cat mainte_list
sac-is1b-ssd20g-st201
sac-is1b-ssd20g-st214
```

## usacloudとgrepで関係あるインスタンスを見つける

以下のコマンドを実行する。

```shell
$ usacloud disk ls --zone all | egrep -f mainte_list 
```

すると、以下の感じでメンテ対象のストレージのレコードだけがgrepされるのでさっと分かる。

```shell
$ usacloud disk ls --zone all | egrep -f mainte_list
| is1b | 112xxxxx6xxx | storage_dockerSRV     | -    | 11290xxxxx28(dockerSRV)            | ssd  | 20GB | virtio     | sac-is1b-ssd20g-st201 | dockerSRVのストレージ |
| is1b | 11xxxx250563 | myvpn                | -    | 1131002xxxxx(myvpn)                | ssd  | 20GB | virtio     | sac-is1b-ssd20g-st214 | -                     |

$ 
```

# おわり

何だか出力結果が野暮ったいけど、まあいいかな…