IBM Cloud: VPCのAuto scale機能(1): Instance Templateによるプロビジョニング

#1. はじめに
（日本語版のdocsではまだ翻訳が間に合わずベータ表示されたままになっていますが）、IBM CloudのVPCにおいてAuto Scale機能がGAされたので、試してみました。

https://cloud.ibm.com/docs/vpc?topic=vpc-creating-auto-scale-instance-group&locale=en

#2. AutoScale利用の流れ

1. 最初に`Instance Template`を作成する。`Instance Template`は増減させるVSIの雛形を定義したものであり、ここで利用するImageやプロファイル（vCPU数やメモリ量）やSSH鍵などを指定する。
2. 次に、この`Instance group`を作成する。`Instance group`は、`Instance Template`を特定のルールを元に増減させるためのルールを定める。

ただ、実は`Instance group`のようなポリシーを定めなくても、`Instance Template`だけで単独利用することもできます。これにより、

- `Instance Template`のテスト
- 毎回VSIを作成する際に、プロファイルやイメージを都度設定することなく、**「いつものお気に入り」**をとして利用

という利用方法が可能になります。よって、今回は、`Instance group`を作成せずに`Instance Template`だけを単独利用するところまで話を進めてみたいと思います。

#3. Instance Templateの作成

以下より増減の単位の元となるサーバーの雛形（`Instance Template`)を定義します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/45218b13-b683-d398-c21a-20af3fa3e157.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/efac62fe-884d-7957-5f9b-a72eb2246472.png)
`User Data`には、[この記事](https://qiita.com/testnin2/items/bcefff6c61f089d01f25)で利用したものを利用し、Apacheおよびコンテンツを自動設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/1243a805-b849-8e3b-4bb0-8a39388afdc2.png)
ネットワーク設定などは、いったんそのままに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/87c5c448-c63f-6294-4630-b0bfcc21b19f.png)

この状態で`Create Instance Template`を押下すると、以下のようにInstance Templateが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/5923c2f2-8f77-78e3-d345-ef81c28d6535.png)

なお、`Instance Template`の費用が出てきてギョッとしてしまいますが、これは実際にサーバーをプロビジョニングした際にどれぐらいの費用になりそうかを出しているだけであり、`Templates do not incur charges. Estimate applies only to instances created from this template.`と記載されている通り、`Instance Template`自体には費用は発生しません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/f695da6a-c013-e3a8-d23d-23cb156ecfe8.png)



#4. Instance Templateを使った手動プロビジョニング

ところで、ここまでの流れで疑問に思わなかったでしょうか？

- なぜ`Instance Template`作成にZoneを選択しているの？この`Instance Template`ってどのZoneでも利用できるんじゃないの？
- なぜInstance Template`作成にsubnetを選択しているの？この`Instance Template`ってどのZoneでも利用できるんじゃないの？

`Instance Template`は`Instance group`と組み合わせて利用する場合は、一度作った`Instance Template`を元にどのZoneに展開する際にも利用できます。

しかし、以下のように`Instance group`なしの単独利用もできるため、Zoneやsubnetを指定できるようになっているようです（とはいえ、Instance TemplateでZoneやsubnetを指定するのではなく、VSIプロビジョニング時に選択できるようにしておいた方がよりスマートのように私には思えますが・・・将来仕様が変わらないかな？あと、一度設定した`User Data`が詳細画面からは現在確認できないのも微妙（こちらは修正される予定？）・・・）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/b9106b2a-2561-0102-2ad9-0051f9b0c4d5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/74b9adeb-7cbe-e334-418f-d4e236e4d0e3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/88e3e90b-e2a8-907c-ed4a-3a2d63f0d548.png)


```テスト
#Network ACLやSecurity Groupでブロックされていないことを確認しておくこと

（同一VPC上の別サーバーからのアクセス）
$ curl -I http://10.0.0.10
HTTP/1.1 200 OK
Date: Wed, 26 Aug 2020 07:52:04 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Wed, 26 Aug 2020 07:50:48 GMT
ETag: "153-5adc313ed21a8"
Accept-Ranges: bytes
Content-Length: 339
Content-Type: text/html; charset=UTF-8

（同一VPC上の別サーバーからのアクセス）
$ ssh root@10.0.0.10
The authenticity of host '10.0.0.10 (10.0.0.10)' can't be established.
ECDSA key fingerprint is SHA256:o80eH+mf6LnaCWH8MeDcFEPNMHHSgSLklZfbVjZ2WXU.
ECDSA key fingerprint is MD5:e8:cb:cd:69:a2:5d:f4:2b:8d:b1:5d:33:a8:53:c2:36.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.10' (ECDSA) to the list of known hosts.
[root@webapache-na2kein4lp ~]# date
2020年  8月 26日 水曜日 16:52:18 JST

```

#5 最後に
次回以降は`Instance group`と組み合わせて、真のAuto Scaleらしい動きを確認したいと思います。