【Oracle Cloud】続・インスタンスの起動と停止をスケジュールしたい (Resource Scheduler)

カバー

はじめに

以前、Oracle Cloud Infrastructure (以下 OCI と表記) 上で利用している Compute リソースの自動起動 / 停止を行うために、常時稼働中のインスタンスで Cron を利用して実現する方法を紹介しました(前回の記事はこちら)。 2024 年 5 月に OCI リソースの自動起動 / 停止を管理する Resource Scheduler サービスが追加されたため、ご紹介します。

Resource Scheduler とは

Resource Scheduler は、指定した日時に、指定した OCI 上のリソースを操作 (起動 / 停止) するサービスです。Resource Scheduler を利用して不要な時間帯は停止し、再び必要な時に起動することで、一元管理されたテナント・グループ内の Database および Compute リソースのコストを削減できます。
Resource Scheduler リソース (スケジュール) は、以下の 3 つの要素から成り立ちます。

  • アクション: 起動と停止、どちらを実行するか
  • 対象リソース: どのリソースに、アクションを実行するか
  • 実行タイミング: いつ、アクションを実行するか

Resource Scheduler の利用に必要な権限

Resource Scheduler を利用するには、以下の権限が必要となります。

  • スケジュールの作成ユーザ: スケジュールの作成権限
  • スケジュール: 対象リソースの操作権限

スケジュールの作成手順

ここからは Oracle Cloud Infrastructure Documentation / Creating Schedules を参考に、スケジュールの作成手順を示します。

  1. ユーザに、スケジュールの作成権限を付与
  2. スケジュールの作成
  3. スケジュールに、対象リソースの操作権限を付与

ユーザに権限を付与

スケジュールの作成を許可する権限

ユーザがスケジュールを作成できるように、Resource Scheduler の管理権限を付与します。
付与する権限は次のとおりです。

Allow group <Group_Name> to manage resource-schedule-family in tenancy
  • <Group_Name>
    • 権限を付与するグループの名前
  • in tenancy
    • スケジュールのスコープはテナンシ全体であるため、コンパートメントごとの設定はできない

スケジュールの作成 - 新規作成

OCI コンソールのメニューから、「Governance & Administration」→「Resource Scheduler」→「Schedules」を選択します。

Resource Scheduler の一覧ページから、「Create a schedule」ボタンを押下して、スケジュールの作成画面に移動します。

スケジュールの作成 - 基本情報の設定

はじめにスケジュールの基本情報を設定します。

  • Schedule name
    • スケジュールの名前
  • Schedule description
    • スケジュールの説明
    • 入力は任意
  • Action to be executed
    • 実行するアクション
    • StartStop から選択

設定後、「Next」ボタンを押下します。

スケジュールの作成 - 対象リソースの設定

次に、実行するアクションの対象となるリソースを設定します。
Oracle Cloud Infrastructure Documentation / Resource Scheduler Overview - Benefits では、Compute、Autonomous Database、Base Database リソースの操作ができるよう記載されていますが、東京リージョンにおいて 2024 年 8 月時点で対応しているリソースは Instance、InstancePool、Autonomous Database です。Base Database など他リソースについては、今後追加される可能性があるとのことでした。

ここで表示されるリソースは、スケジュールを作成するユーザの権限で異なります。表示されるリソースが想定と異なる場合は、権限を確認してください。

Resource selection method の設定

「Resource selection method」で、対象リソースの選択方法を指定できます。
以下のうち、どちらかを設定します。

  • Static (静的)
    • 対象リソースは、スケジュール作成時に選択したリソースのみ
    • 対象リソースを変更する場合は、スケジュール自体を更新する必要がある
  • Dynamic (動的)
    • 対象リソースは、スケジュールの実行時に決定される
    • 動的に設定される際の条件は、後述のフィルタが適用される

Search and filter の設定

「Search and filter」に条件を設定することで、一覧表示されているリソースを絞り込むことができます。
「Resource selection method」 で Static を選択した場合は検索条件として、Dynamic を選択した場合はフィルタとして利用されます。
設定できる値は以下のとおりです。

  • Compartment
    • 対象リソースが存在するコンパートメント
    • デフォルトは All
  • Resource Type
    • 対象リソースの種類
    • InstanceInstancePoolAutonomousDatabase から選択 (複数選択も可能)
    • デフォルトはすべて選択済み
  • Status
    • リソースの状態
    • AVAILABLERUNNINGSTOPPED から複数選択可能
    • デフォルトは設定なし
  • Tags
    • 対象リソースに付与しているタグ
    • Free-form Tags または Defined Tags から選択可能
    • タグを有しているか、または有しているタグの値まで一致しているか、を設定可能
    • デフォルトは設定なし

※ ブログ執筆時点では、サービスの不具合により Free-form Tags ではリソースの自動起動 / 停止ができませんでした。そのためタグを用いた Dynamic な Resource Scheduler を作成する場合は、 Defined Tags を選択してください。

対象リソースの選択

表示されているリソースから、対象リソースを選択します。

  • Static の場合
    • リソース名の左にあるチェックボックスをクリック
  • Dynamic の場合
    • 「Search and filter」で設定したフィルタに該当するリソース全て
      • Static の場合に存在したチェックボックスは非表示

Dynamic なスケジュールを作成する場合、ここに表示されるリソースは、フィルタに該当する 今現在の リソースの一覧になります。
スケジュール追加後も、フィルタ条件に一致するリソースを作成した場合は、そのリソースも対象に含まれます。

リソースの選択後、「Next」ボタンを押下します。

スケジュールの作成 - 実行タイミングの設定

次に、アクションを実行する日時を設定します。

記述方法は 2 パターンあり、Specify schedule using から設定可能です。

  • A. Form interface
    • 実行タイミングを GUI で選択
  • B. Cron expression
    • 実行タイミングを Cron 形式で記述

A. Form interface の設定値

  • Interval
    • スケジュールが実行されるタイミングを設定
    • One-time (1 回のみ)、Hourly (毎時)、Daily (毎日)、Weekly (毎週)、Monthly (毎月) から選択可能
    • デフォルトは Weekly
  • Repeat every
    • 実行間隔を設定
      • 隔日や 3 か月ごとなどを設定する場合に利用する
    • IntervalOne-time を選択している場合は、入力フォームは非表示
    • デフォルトは 1
  • Day(s) of the week
    • 実行する曜日を設定
    • IntervalOne-timeHourlyDaily を選択している場合は、入力フォームは非表示
    • IntervalMonthly を選択している場合は、フォーム名が Day(s) of the Month に変更される
      • その場合は、実行する日付を設定する

B. Cron expression の設定値

A、B 共通の設定値

どちらの記述方法を選択しても、以下の設定は共通して行います。

  • Time
    • スケジュールが実行される時間を設定
    • デフォルトはスケジュール作成時の時刻
    • Cron 形式の場合、Recurrence details 内で実行時刻を設定しているため、この設定値がどのように影響するか不明
    • UTC 指定のため注意
  • Start date
    • スケジュールの実行を開始する日付
    • デフォルトはスケジュール作成時の日付
  • End date
    • スケジュールの実行を終了する日付
    • 設定は任意で、デフォルトは設定なし

実行タイミングの設定後、「Next」ボタンを押下します。

スケジュールの作成手順 - スケジュールの確認

最後に、作成するスケジュールの設定を確認します。
問題がない場合は、「Create schedule」ボタンを押下して、スケジュールを作成します。

スケジュールに権限付与

次に、作成したスケジュールに対象リソースを操作する権限を付与します。 付与する権限は次のとおりです。

Allow any-user to manage <Resource_Type> in compartment <Compartment_Name> where all{request.principal.type='resourceschedule',request.principal.id='<Resource_Scheduler_OCID>'}
  • manage <Resource_Type>
    • 今回作成したスケジュールが操作するリソースの種類
    • インスタンスなど、use 権限に起動 / 停止が含まれるリソースの場合は、 manage ではなく use で代替可能
  • in compartment <Compartment_Name>
    • リソースが存在するコンパートメント名を <Compartment_Name> に記述
    • コンパートメントの OCID で指定する場合は、in compartment id <Compartment_OCID> と記述する
  • where all{request.principal.type='resourceschedule',request.principal.id='<Resource_Scheduler_OCID>'}
    • 作成したスケジュールの OCID を <Resource_Scheduler_OCID> に記述
      • スケジュールごとに権限を付与
    • リソースの種類やコンパートメントが一致している全てのスケジュールに対して、まとめて権限を付与する場合は where all{request.principal.type='resourceschedule'} と記述
      • この場合は、スケジュールの追加により、意図しないスケジュールが実行される可能性があることに注意

スケジュールの実行を確認

スケジュールの実行は、スケジュールの OCI コンソール上に表示されている Work requests で確認できます。

Work requests には、以下の情報が表示されています。

  • Run date
    • スケジュールの実行時刻
  • Operation type
    • 実行アクションの種類
  • Resources
    • 対象リソースの合計数
    • リソースの状態は影響しない (対象リソースを起動するスケジュールがある場合、対象リソースが既に起動していた場合でも、合計数に含まれる)
  • Status
    • スケジュール実行の成否を表示 (失敗した場合も、原因は表示されない)
  • Duration
    • スケジュールの実行にかかった時間

スケジュールの編集

スケジュールの編集は、OCI コンソール上から行うことができます。 リソースのページを開き、「Edit schedule」ボタンを押下することで、リソースの編集ができます。

リソースの編集を実施しても OCID は変更されませんが、対象リソースの種類やコンパートメントを編集した場合は、権限の修正もあわせて実施する必要があります。

おわりに

今回は OCI に追加された新サービス Resource Scheduler について、作成方法と編集方法を確認しました。
以下に、スケジュール作成時のポイントをまとめました。

  • 対象リソースの設定
    • Static
      • アクションが実行される対象リソースを、スケジュール作成時に設定
      • 対象リソースを変更する場合は、再度スケジュールを編集する必要がある
    • Dynamic
      • アクションが実行される対象リソースを、アクション実行時に設定
      • フィルタ設定を誤ると、意図しないリソースを操作する可能性があるため、注意が必要
  • 実行タイミングの設定
    • Form interface
      • 値を選択していくことで、簡単に実行タイミングが設定可能
    • Cron expression
      • Form interface よりも細かい実行タイミングが設定可能
      • 今まで Cron を利用して自動起動 / 停止を実現していた場合は、その設定をそのまま活用できる

Resource Scheduler はリソースを操作することができるため、コスト削減が期待できます。 また、このサービスを利用することで、リソースの起動 / 停止を実現するために自前で構築していた環境が不要になるので、その点でもコストの削減につながります。
サービス開始直後ということもあり、対応するリソースが少ないため、今後も増えていくことを期待しています。


TOP
アルファロゴ 株式会社アルファシステムズは、ITサービス事業を展開しています。このブログでは、技術的な取り組みを紹介しています。X(旧Twitter)で更新通知をしています。