[OCI]スケジュールベースの自動スケーリング構成を利用して、コーディングレスでのComputeインスタンスの自動起動/停止を試してみた

# はじめに

インスタンス・プールのスケジュールベースの自動スケーリング構成でインスタンスのライフサイクル状態が変更できるようになっています。

これまでインスタンスの自動起動/停止は、cron等で定期実行するスクリプトでAPIを叩いて実現していましたが、こちらの自動スケーリングの機能で実現できないか試してみました。

# 1.Computeインスタンスを作成する

まずはComputeインスタンスを作成します。

![スクリーンショット 2021-05-20 12.08.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b72cddd4-b17d-aa66-3577-8a1ed41780c6.png)

# 2.カスタム・イメージを作成する

プラットフォーム・イメージをもとに作成したインスタンスからインスタンス構成を作成しても、VM内での変更が反映されないので、一度カスタム・イメージ化します。
インスタンスの詳細画面の「他のアクション」をクリックし、「カスタム・イメージの作成」をクリックします。
![スクリーンショット 2021-05-20 12.10.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/05dea972-c1a0-b933-c472-8ad185e5b559.png)

カスタム・イメージ名を入力し、「カスタム・イメージの作成」をクリックします。
![スクリーンショット 2021-05-20 12.10.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/42361c32-3ddf-0328-65ec-c4d60e435f47.png)

# 3.カスタム・イメージからComputeインスタンスを作成する

2.で作成したカスタム・イメージから新しいComputeインスタンスを作成します。

カスタム・イメージに移動します。
![スクリーンショット 2021-05-20 12.11.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/e4cee38e-4bfa-dcc9-29c5-ea8a792b9f37.png)
カスタム・イメージ名をクリックします。
![スクリーンショット 2021-05-20 12.12.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/1719b17e-878b-9b9d-d09e-76c86a113065.png)
「インスタンスの作成」をクリックして、インスタンスを作成します。
![スクリーンショット 2021-05-20 12.14.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/138ef8bb-ed9c-7252-9454-51cf7e0902a3.png)
通常と同じ手順でComputeインスタンスを作成します。
![スクリーンショット 2021-05-20 12.15.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/8e072e01-3cc4-9699-1f21-e62af14879dc.png)
カスタム・イメージをもとにしたComputeインスタンスが作成されました。
![スクリーンショット 2021-05-20 12.53.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/494f5a89-cade-5998-8e1e-dd4cf2c6957c.png)

# 4.カスタム・イメージから作成したComputeインスタンスをもとにインスタンス構成を作成する

3.で作成したComputeインスタンスからインスタンス構成を作成します。

「他のアクション」をクリックし、「インスタンス構成の作成」をクリックします。
![スクリーンショット 2021-05-20 12.17.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/90c2ac28-a7f7-647c-54c5-a3878800dfa7.png)
インスタンス構成の名前を入力し、インスタンス構成を作成します。
![スクリーンショット 2021-05-20 12.19.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/c841d22c-c78d-f993-61ec-971a964d26be.png)
インスタンス構成が作成されました。
![スクリーンショット 2021-05-20 12.19.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/42d9a4f9-f993-4085-276d-9bde1f84ef4b.png)


# 5.インスタンス構成からインスタンス・プールを作成する

4.で作成したインスタンス構成をもとにインスタンス・プールを作成します。

「インスタンス・プールの作成」をクリックします。
![スクリーンショット 2021-05-20 12.20.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/131acfd7-2cbe-bd02-1950-fbaa25920bc2.png)

インスタンス・プールの名前、インスタンス数を入力して「次」をクリックします
![スクリーンショット 2021-05-20 12.21.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/24038ac4-dabb-030c-07f1-287fca4b11dd.png)
インスタンス・プール内のインスタンスのVCN、サブネットを指定し、「次」をクリックします。
![スクリーンショット 2021-05-20 12.21.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b761d927-c752-7518-9ddf-02081450cb19.png)
確認画面が表示されるので、内容に問題がなければ「作成」ボタンをクリックします。
![スクリーンショット 2021-05-20 12.22.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/88987a1a-5ac5-2cf1-a150-57ef3961467e.png)
インスタンス・プールが作成されました。
![スクリーンショット 2021-05-20 12.24.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/9007b12c-c860-2866-66ce-017708032084.png)
コンソールの「インスタンス」の画面で、インスタンス・プールによって作成されたインスタンスが確認できます。
![スクリーンショット 2021-05-20 12.24.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/086aa3b0-eae3-b40c-7381-87657dfa6e62.png)

# 6.インスタンス・プールのスケジュールベースの自動スケーリング構成を作成する
5.で作成したインスタンス・プールに、スケジュールベースの自動スケーリング構成を作成します。

作成したインスタンス・プールの詳細画面に戻ります、
![スクリーンショット 2021-05-20 12.25.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/ffca0ca5-c265-328f-1b96-0ab303d1197d.png)
「他のアクション」をクリックし、「自動スケーリング構成の作成」をクリックします。
![スクリーンショット 2021-05-20 12.25.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/5638e9a1-d76c-0690-c475-fced93899744.png)
自動スケーリング構成の名前を入力し、「次」をクリックします。
![スクリーンショット 2021-05-20 12.26.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/ee12abb7-e502-f2f4-5e8f-fcf600ab3303.png)
「スケジュールベースの自動スケーリング」を選択します。

ひとつ目のポリシーとして、毎時30分にインスタンスを停止するポリシーを設定します。
実行するアクションとして「全インスタンスのライフサイクル状態の変更」を選択し、ライフサイクル・アクションとして「強制停止」を選択します。
![スクリーンショット 2021-05-20 12.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/a53a1f50-a234-b0cd-df45-fb2a7bb1bcff.png)
次にポリシーの実行スケジュールをcron形式で指定します。
ひとつ目のポリシーの入力が完了したら、「＋他のポリシー」ボタンをクリックします。
![スクリーンショット 2021-05-20 12.31.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/cb284cf5-674b-cba0-4a53-d9c1b42fb09f.png)
同様に、ふたつ目のポリシーとして、毎時0分にインスタンスを起動するポリシーを設定します。
入力が完了したら、「次」をクリックします、
![スクリーンショット 2021-05-20 12.33.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f6ceba29-18d0-d94c-033a-169b33822a0f.png)
確認画面が表示されますので、設定内容に問題がないことを確認し、「作成」ボタンをクリックします。
![スクリーンショット 2021-05-20 12.35.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/6fabaada-c781-19a8-dae8-1014ba00ce2b.png)
インスタンス・プール内のインスタンスが毎時0分に起動し、毎時30分に停止する自動スケーリング構成が作成されました。
![スクリーンショット 2021-05-20 12.36.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/3a7a8882-7035-0346-d131-6687970926ad.png)

# 7.動作確認

しばらく経ってから、インスタンス・プールによって起動されたインスタンスの詳細画面でメトリックを確認してみます。
![スクリーンショット 2021-05-20 14.05.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/71e76f81-1cde-0a82-1a43-4dabf417bda0.png)

自動スケーリング構成での設定通り、毎時0分に起動し、毎時30分に停止していることが確認できました。

# まとめ
Computeインスタンス限定ではありますが、インスタンス・プールのスケジュールベースの自動スケーリングの機能を利用して、コーディング不要でインスタンスの自動起動/停止が実現できました。