OCI POC環境にリソース・スケジューラで自動起動自動停止を設定する

# はじめに
各クラウドの競争と発展により4大クラウドのどれを選んでも同じ技術要件の環境を実現することが可能となってきました。そうすると次に求められるのはコストです。同じサービスをいかに安く高品質のまま提供できるかという検討に移ります。そこでOCIでは2024年5月21日に新しいサービスである[OCIリソース・スケジューラ](https://docs.oracle.com/ja-jp/iaas/Content/resource-scheduler/home.htm)がリリースされました。これによりインスタンスの自動起動自動停止をサービスで簡単に設定することができるようになります。

# 目次
1.[設定可能リソース](https://qiita.com/ogacloud/items/d5962118ca8498767799#1%E8%A8%AD%E5%AE%9A%E5%8F%AF%E8%83%BD%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9)
2.[検証環境](https://qiita.com/ogacloud/items/d5962118ca8498767799#2%E6%A4%9C%E8%A8%BC%E7%92%B0%E5%A2%83)
3.[POC環境事前構築手順](https://qiita.com/ogacloud/items/d5962118ca8498767799#3poc%E7%92%B0%E5%A2%83%E4%BA%8B%E5%89%8D%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86)
4.[リソーススケジューラ構築手順](https://qiita.com/ogacloud/items/d5962118ca8498767799#4%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86)
5.[確認テスト](https://qiita.com/ogacloud/items/d5962118ca8498767799#%E7%A2%BA%E8%AA%8D%E3%83%86%E3%82%B9%E3%83%88)


# 1.設定可能リソース
現在では下記のリソースをスケジュール設定することが可能です。今後は設定できる対象リソースも拡大していくと考えられますので続報に期待しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/68ad52a9-1b19-0f45-5059-eff563d2f2f4.png)

# 2.検証環境
今回は下記のPOC環境を準備して検証を実施いたします。
リソース
・Compute1台
・Autonomous Database1台
・リソース・スケジューラ(起動用と停止用)
・Policies
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/7f54e6f9-083e-f9af-b91b-214ba9fc7d41.png)
**※注意点**
こちらの環境は設定を行いやすいようにルートコンパートメント、管理権限を持ったユーザーを利用しています。検証時にサブコンパートメントや管理権限のないユーザーを利用する場合はポリシー設定が異なるためこちらの記事の手順をご確認ください。
[参照][OCI リソース・スケジューラでインスタンスの自動起動と停止を設定する](https://qiita.com/letian/items/1c5d1446e31c11f6989c)
# 3.POC環境事前構築手順
OCIへログインしてください。ネットワークから作成していきます。

**VCNの作成**
[左上メニュー]→[ネットワーキング]→[仮想クラウドネットワーク]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/f5808f2b-6bf7-3f2e-d879-0ec436a22f99.png)

[VCNウィザード]→[インターネット接続性を持つVCNの作成]→[VCNウィザードの起動]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/94011e7f-29a4-0fd5-4ea9-a36eb8611dca.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/6cffc04c-9ddc-c524-2af3-aa5e618c9040.png)

[各種ネットワーク部分の設定]→[次]→[作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/203c77e5-e0c2-d8de-05d4-b8f7bc2f42a2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/cb556378-b47c-aeba-da5e-b0be7365f620.png)


完了後[VCNの表示]で作成されたVCNを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/58b37325-80f5-2334-077c-455e2b22f1aa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d68d46ad-0379-6c76-92a5-b0d2ff0e2b6f.png)

**POC用APサーバ(Compute)の作成**
[コンソール]→[左上メニュー]→[コンピュート]→[インスタンス]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/124d3b30-1b3b-0b73-66c1-9938b0c718ea.png)

[インスタンスの作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/0ecc2d6f-ce80-439b-62b6-ebc5cd4f6e44.png)

APサーバ内は設定しないためリソース名、VCN、SSH Keyのダウンロードなど必要項目を確認入力し[作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d41b9a00-8ca7-d625-667a-5bea633be972.png)

作成後のPOC用APサーバが問題なくできたか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/df97b9ea-c1a6-e107-6928-507338d3cb8b.png)

スケジューラで自動起動設定を入れるために[アクション]→[停止]→[停止]でComputeを停止しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/474b1d6e-f245-9303-83d0-003ecc9a509d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/2ec06eae-c303-a628-e7bd-7dfa5ef7a969.png)

**POC用Autonomous Databaseの作成**
[コンソール]→[左上メニュー]→[Oracle Database]→[Autonomous Database]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/9c074c9b-6426-58a4-deaf-4d4200304f01.png)

[Autonomous Databaseの作成]→内部設定は行わないのでDBバージョン、パスワードやワークロード・タイプなど必要項目を入力し[Autonomous Databaseの作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/6dbb89b5-3ffc-42e4-4434-4d56de90b4d4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/959e1981-290b-8fa3-f029-051c386ca6be.png)

作成後のPOC用Autonomous Databaseが問題なくできたか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/655ea0f4-b97b-2064-c242-ba5c01f32c27.png)

スケジューラで自動起動設定を入れるために[アクション]→[停止]→[停止]でAutonomous Databaseを停止しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/db087893-c333-bb88-bd59-6468b977046e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/11fe21c7-6bc0-0dc2-3790-7c539b8f524b.png)

# 4.リソーススケジューラ構築手順
ここから自動起動用と自動停止用のスケジューラを設定していきます。
**自動起動用リソース・スケジューラの作成**

[コンソール]→[左上のメニュー]→[ガバナンスと管理]→[リソース・スケジューラ]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b4657092-b544-8b8d-0815-33f80b2f1390.png)

[スケジュールの作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/69d145c9-5209-6e6c-f4d0-9ea0a2fa5d55.png)

[スケジュール名]を入力→実行するアクションで[起動]を選択→[次]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/4500ad21-5d60-8fcf-f2c5-360414cafd46.png)

[静的]→検索とフィルタをクリック→[リソースタイプ]→[Instance]と[AutonomousDatabase]→[適用]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/e666a596-1b30-f0ce-f8f9-531cb09391ce.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/1f42ba48-bad1-f2d7-b0db-ab0d2a9a2c73.png)

今回自動起動を設定するAPサーバとADBにチェックを入れ[次]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/0936c3c2-c7f2-2a41-fa9c-9405609337f3.png)

今回は起動間隔に[毎日]を選択し、[時間]と[開始日]を設定し[次]を選択
**※時間はUTC時間なのでスケジューラを起動したい日本時間から-9時間したものを入れてください。**
**例:JST(日本時間)10:00→UST(米国時間)01:00**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d2d1638a-ddbc-9894-4c54-8f665fdf7408.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/75dabf52-3e42-a1cc-20a3-d0df59684d69.png)

**※(毎週を選び曜日指定をすることで平日のみの実行もできます)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b5f4d38e-130a-0132-7914-a204362c62dc.png)


情報を確認し[スケジュールの作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/c7512665-e7d3-d549-6c10-f9ad8e63b798.png)

スケジューラのステータスが作成中から有効になったことを確認します。名前の下の[リソース]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/01f26bfe-6477-f1a1-6944-79fd9c7c08de.png)

起動用Policiesに記載するための起動用リソース・スケジューラのOCIDをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/96f852b7-b13e-e92d-8cc9-e94668b968a5.png)

リソース・スケジューラはpolicy設定がないと実行エラーとなるためpolicyを作成していきます。


Policyは下記サイトに記載があるためこちらをベースに今回のPolicyを記載していきます。
[参照]:[スケジュールの作成](https://docs.oracle.com/ja-jp/iaas/Content/resource-scheduler/tasks/create-manage.htm)

**基本ステートメント**
Allow any-user to manage <font color="#ff0000">**<リソースタイプ></font> in tenancy where all {request.principal.type='resourceschedule', request.principal.id='='<font color="#ff0000">**<ocid_of_resourceschedule>*</font>'}
赤色の<font color="#ff0000">**<リソースタイプ></font>の部分に対象のリソースを記載
赤色の***部分に先ほどのコピーしたOCIDを入れることでPolicyが作成できてスケジューラが起動します。

**今回の記載例**
**[Compute用のスケジュール実行ポリシー]**
Allow any-user to manage <font color="#ff0000">**instance**</font> in tenancy where all {request.principal.type='resourceschedule', request.principal.id='='<font color="#ff0000">**ocid1.resourceschedule.oc1.ap-tokyo-1.ama...uq**</font>'}

**[Autonomous Database用のスケジュール実行ポリシー]**
Allow any-user to manage <font color="#ff0000">**autonomous-database**</font> in tenancy where all {request.principal.type='resourceschedule', request.principal.id='='<font color="#ff0000">**ocid1.resourceschedule.oc1.ap-tokyo-1.ama...uq**</font>'}

**起動用Policiesの作成**
[コンソール]→[アイデンティティとセキュリティ]→[ポリシー]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/227887a5-77ba-c1dc-5815-dd4bc3eac578.png)

[名前の入力]→[説明の入力]→[コンパートメントの指定]→[手動エディタの表示にチェック]→[ポリシー・ビルダーの記載]
Compute用のポリシーをコピーして<font color="#ff0000">**ocid1.resourceschedule.oc1.ap-tokyo-1.ama...uq**</font>の部分をコピーした自動起動スケジューラのOCIDに書き換えてポリシー・ビルダーへ貼り付けます。
貼り付け後[作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/1bfa348a-8b43-ab60-dfda-2c37649177cd.png)
作成したポリシーを表示し[ポリシーステートメントの編集]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/51f0523f-b8e2-45e8-beb3-18426932ec78.png)
[+別のステートメント]で項目を増やしポリシー・ビルダーに記載したポリシーのinstance→autonomous-databaseに書き換えたものを追記して[変更の保存]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/69f08cb2-44c9-db50-7a1b-1e0fe5c6c5c3.png)


**自動停止用スケジューラの作成**
手順は起動用スケジューラと基本的に同じになります。
[コンソール]→[左上のメニュー]→[ガバナンスと管理]→[リソースとスケジューラ]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/04e0a074-2091-fa43-b793-a7445c9de5fd.png)

[スケジュールの作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/69d145c9-5209-6e6c-f4d0-9ea0a2fa5d55.png)

[スケジュール名]を入力→実行するアクションで[停止]を選択→[次]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/5459924c-dafb-4d08-c1a1-a8d3b4799b31.png)


[静的]→検索とフィルタをクリック→[リソースタイプ]→[Instance]と[AutonomousDatabase]→[適用]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/e666a596-1b30-f0ce-f8f9-531cb09391ce.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/1f42ba48-bad1-f2d7-b0db-ab0d2a9a2c73.png)

今回自動停止を設定するAPサーバとADBにチェックを入れ[次]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/0936c3c2-c7f2-2a41-fa9c-9405609337f3.png)

今回は停止間隔に[毎日]を選択し、[時間]と[開始日]を設定し[次]を選択
**※時間はUTC時間なのでスケジューラを起動したい日本時間から-9時間したものを入れてください。**
**例:JST(日本時間)10:00→UST(米国時間)01:00**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d2d1638a-ddbc-9894-4c54-8f665fdf7408.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/75dabf52-3e42-a1cc-20a3-d0df59684d69.png)

**※(毎週を選び曜日指定をすることで平日のみの実行もできます)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b5f4d38e-130a-0132-7914-a204362c62dc.png)


情報を確認し[スケジュールの作成]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/2544d405-2fa8-3d11-7b8c-3f43cb16e211.png)


スケジューラのステータスが作成中から有効になったことを確認します。名前の下の[リソース]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/4215ea99-c7f1-a050-4cef-7b1609d7c113.png)


停止用Policiesに記載するための停止用リソース・スケジューラのOCIDをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/9f7dc805-3a39-39c8-3c08-9dab79cb5eba.png)

**停止用Policiesの作成**
[コンソール]→[左上のメニュー]→[アイデンティティとセキュリティ]→[ポリシー]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/227887a5-77ba-c1dc-5815-dd4bc3eac578.png)

[名前の入力]→[説明の入力]→[コンパートメントの指定]→[手動エディタの表示にチェック]→[ポリシー・ビルダーの記載]
記載例のCompute用のポリシーをコピーして<font color="#ff0000">**ocid1.resourceschedule.oc1.ap-tokyo-1.ama...uq**</font>の部分をコピーした停止用スケジューラのOCIDに書き換えてポリシー・ビルダーへ貼り付けます。
貼り付け後[作成]を選択
!![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/2cfa4bda-eed0-f47a-a31d-6955c72517c7.png)

作成したポリシーを表示し[ポリシーステートメントの編集]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/51f0523f-b8e2-45e8-beb3-18426932ec78.png)

[+別のステートメント]で項目を増やしポリシー・ビルダーに記載したポリシーのinstance→autonomous-databaseに書き換えたものを追記して[変更の保存]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/04d23894-1d37-7327-79c7-5b19d9bede8f.png)

これで全構築手順は完了です。
# 確認テスト
リソーススケジューラが問題なく起動しAPサーバとAutonomous DBの起動停止が行われたか確認します。
起動用のポリシーと停止用のポリシーの実行時間が過ぎた後
[コンソール]→[左上のメニュー]→[ガバナンスと管理]→[リソース・スケジューラ]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b4657092-b544-8b8d-0815-33f80b2f1390.png)
最終実行日とSUCCEEDEDになっているかを確認します。
※(失敗している場合はFailedと表示されています)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/026634b5-f88f-6953-305a-b38bf9b173a8.png)
※自動起動スケジューラが実行された後のAPサーバとAutonomous DBの表示です。先ほどの停止状態から無事起動を確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/b2e4d0f0-6a4f-2a5b-42f0-6ac3cd282fc0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2172788/d9f69c9f-2b2a-f1a4-c293-c34bf2c7c227.png)

**まとめ**
このようにスケジューラを使って環境実行時間を最適化できるようになりました。今後も自動起動自動停止をうまく活用しながら積極的にOCIを利用してみてください。