TL

Cloud Service

OCI Resource Manager

Terraform をマネージドで実行し、OCI インフラをコードで宣言的にプロビジョニングする IaC サービス。状態管理やドリフト検出も内蔵し、AWS の CloudFormation に相当する。

中級運用上の優秀性信頼性
最終更新: 2026-06-14公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.Terraform をマネージド実行する OCI 標準の IaC サービス。
  • 2.スタック単位で plan/apply/destroy し状態とドリフトを内蔵管理。
  • 3.リソースプリンシパルで認証し鍵レスかつ最小権限で運用する。

解決する課題

クラウドのインフラを手作業のクリック操作で構築・変更する運用は、再現性がなく、構成のばらつきやヒューマンエラーを生みます。OCI Resource Manager は Terraform をマネージド環境で実行する IaC(Infrastructure as Code) により、これらの課題を解決します。

  • インフラ構成をコードで宣言的に管理し、レビュー・バージョン管理・再利用したい
  • 開発/検証/本番など同一構成の環境を何度でも再現したい
  • 手作業の構築をなくし、変更前に影響範囲(plan)を確認してから適用したい
  • Terraform の state(状態ファイル)やロックを自前で管理する手間をなくしたい
  • 不要になった環境を**まとめて削除(destroy)**してコストを抑えたい

AWS で言えば CloudFormation に相当する位置づけですが、独自のテンプレート言語ではなく**標準の Terraform(HCL)**を使う点が大きく異なります。

主要概念と用語

  • スタック(Stack): Terraform 構成(HCL ファイル一式)と変数、状態をまとめた Resource Manager の管理単位。CloudFormation の「スタック」に近い概念
  • 構成(Configuration): スタックに含まれる Terraform コード本体。ZIP アップロード、Object StorageGit リポジトリ(ソース管理)、テンプレートなどから取り込める
  • ジョブ(Job): スタックに対して実行する操作の単位。plan(変更計画の算出)/apply(適用)/destroy(削除)/import(既存リソースの取り込み) などがある
  • 状態(State): Terraform が管理する現実のリソースとコードの対応表。Resource Manager が自動で保管・ロックし、利用者は state ファイルを直接扱わなくてよい
  • ドリフト検出(Drift Detection): state とクラウドの実体との乖離(手作業変更など)を検出する機能
  • 変数(Variables): HCL の入力変数。コンソールや API で値を与える。機密値は Vault(Secrets) から参照させる
  • プライベートエンドポイント(Private Endpoint): VCN 内の非公開リソース(プライベートな Git や Kubernetes など)へ Resource Manager から到達するための接続経路
  • テンプレート(Template): よくある構成を雛形化したもの。Oracle 提供のものや自作のものをスタック作成の起点にできる

仕様・制限・クォータ

  • 実行エンジンは標準の Terraform で、OCI Terraform プロバイダーを介してリソースを操作する。HCL の知識がそのまま使える
  • state はサービス側でマネージドに保管・ロックされる。S3 + DynamoDB のようなバックエンドを自前で組む必要がない
  • ジョブは plan / apply / destroy / import が基本。apply は通常直前の plan の結果に基づいて適用する(意図しない変更の抑止)
  • 構成の取り込み元は ZIP・Object Storage・Git(ソース管理)・テンプレートなどに対応する
  • 1 つの apply で扱えるリソース数やジョブの実行時間には実務上の上限があり、巨大な構成はスタックを分割するのが定石(Terraform 一般のベストプラクティスと同じ)
  • スタック・ジョブはコンパートメントとリージョン単位で管理され、テナンシ/リージョンのサービス制限が掛かる。上限引き上げはサービスリクエストで申請する
  • Resource Manager 上で動く Terraform のバージョンは選択肢から指定する形で、利用可能なバージョンは更新されていく(特定バージョンへの固定はコード側の required_version でも担保する)
ローカル Terraform との互換

Resource Manager で動くのは標準の Terraform です。ローカルの terraform CLI で書いた HCL をほぼそのまま持ち込めますし、逆に Resource Manager のスタックをローカルで検証することもできます。違いは主に実行環境と state 管理がマネージドになる点です。

内部の仕組み

スタックを作成すると、Terraform 構成・変数・state が Resource Manager に保持されます。ジョブを起動すると、サービスがマネージドな実行環境で Terraform を起動し、OCI プロバイダー経由で API を呼び出してリソースを作成・変更・削除します。

  • plan ジョブは、現在の state と HCL の差分からこれから起きる変更(追加・変更・削除)を算出し、適用はせず計画だけを返す
  • apply ジョブは計画に従って実際に API を呼び、完了後に state を自動更新する。実行中は state がロックされ、同時実行による破壊が防がれる
  • destroy ジョブは state が管理するリソースをまとめて削除する。環境のクリーンアップに使う
  • ドリフト検出は、state とクラウドの実体を突き合わせ、手作業で変更された差分を一覧化する。検出後はコードを直すか apply で収束させる
  • 認証はリソースプリンシパルを使え、API 署名キーを構成に埋め込まずに OCI を操作できる
apply の前に必ず plan を読む

apply は state とコードの差分を実体に反映します。削除(destroy)や置換(replace)が混ざっていないか plan の出力を必ず確認してください。特に「変更不可属性の更新」は**リソースの再作成(=一時的な消失)**を招くことがあります。

設計パターン / ベストプラクティス

  • 環境ごとにスタックを分割: dev / stg / prod を別スタックにし、変数で差分を吸収する。本番の state を取り違える事故を防ぐ
  • Git ソース管理と連携: 構成を Git で管理し、Resource Manager のスタックを Git に紐づけてコードレビュー → plan → apply のフローを回す
  • モジュール化と再利用: 共通構成を Terraform モジュールに切り出し、複数スタックで再利用する
  • 機密値は Vault から: パスワードや API キーを HCL や変数に直書きせず、Vault(Secrets) から参照する
  • 大きな構成は分割: ネットワーク基盤・共有サービス・アプリ層などレイヤごとにスタックを分け、爆発半径と実行時間を抑える
  • 既存リソースは import で取り込む: 手作業で作った既存リソースを import で state に取り込み、以後コード管理に移行する
  • destroy はガードを付ける: 本番スタックの destroy は権限分離・承認フローで保護し、誤実行を防ぐ

運用・監視

  • ジョブの実行履歴(plan / apply / destroy のログと結果)はスタックから参照でき、失敗時はログでエラー箇所を特定する
  • 誰がいつスタックを操作したか」は OCI Audit で追跡する。IaC 操作の監査証跡として重要
  • ドリフト検出を定期的に実行し、手作業変更を検知してコードへ反映(または是正)する運用を回す
  • ジョブの開始・完了を Events(イベント)で受け、Notifications へ通知したり Functions で後処理を起動するとパイプライン化できる
  • state ロック中の同時実行はサービスが防ぐが、人による並行 apply の運用ルール(承認・ブランチ戦略)はチームで定める
  • 失敗ジョブはコード修正後に再実行する。部分適用後の失敗では state とコードの差分を plan で確認してから収束させる

コスト

Resource Manager サービス自体の利用料は基本的にかからず、課金されるのは実際にプロビジョニングした OCI リソース(Compute・Storage・Database など)です。コスト最適化の本質は「不要な環境を残さないこと」にあります。

費目考え方最適化のヒント
Resource Managerスタック・ジョブの実行自体は基本的に追加料金なしツール費用を気にせず IaC を徹底できる
作成したリソースCompute や DB など実体の従量課金が発生検証環境は使い終えたら destroy で確実に消す
state 管理マネージドで別途バックエンド費用が不要自前の state 用ストレージ/ロックを持たなくてよい
放置リソース削除し忘れた環境が課金され続けるドリフト検出と destroy で残骸を定期清掃する

セキュリティ

  • リソースプリンシパルで認証し、API 署名キーや認証情報を構成・変数に埋め込まない(鍵レス運用)。AWS の IAM ロール相当の考え方
  • IAM ポリシー+コンパートメントで、スタックの管理権限と Terraform が操作できるリソース範囲を最小権限に絞る
  • 機密の入力値は変数に直書きせず Vault(Secrets) から取得する。state にも秘密情報が残り得る点に注意する
  • プライベートな Git やプライベート Kubernetes へ到達する場合はプライベートエンドポイントを使い、経路を VCN 内に閉じる
  • 本番スタックの destroy や apply は権限分離・承認フローで保護し、誤操作・内部不正による一括削除を防ぐ
アンチパターン

Terraform に与えるポリシーを「テナンシ全体を manage」のように広く付けすぎるのは危険です。スタックが必要とするコンパートメントとリソース種別だけに権限を限定し、機密値は変数や HCL ではなく Vault(Secrets) から渡してください。state に平文の秘密が残る構成も避けます。

Well-Architected の観点

  • 運用上の優秀性(Operational Excellence): 手作業を排し、すべての構成変更をコードのレビュー → plan → apply という再現可能な手順に乗せる。変更履歴は Git と Audit で追跡できる
  • 信頼性(Reliability): 同一構成を何度でも再現でき、災害復旧時の再構築や環境のスケールアウトが容易。state ロックとドリフト検出により構成の整合性を保つ
  • セキュリティ(Security): リソースプリンシパルによる鍵レス認証と最小権限ポリシーで、認証情報の漏洩リスクと過剰権限を抑える
  • コスト最適化(Cost Optimization): 検証環境を destroy で一括撤去でき、放置による無駄な課金を減らせる

試験で問われるポイント

頻出
  • OCI Resource Manager は Terraform をマネージド実行する IaC サービスで、AWS の CloudFormation に相当する。ただし独自テンプレートではなく標準 Terraform(HCL) を使う点が要点
  • スタック(Stack) が管理単位で、plan / apply / destroy のジョブを実行する。apply は通常 plan の結果に基づいて適用する
  • state はサービス側でマネージドに保管・ロックされ、自前で state バックエンドやロック機構を用意しなくてよい
  • ドリフト検出で手作業変更との乖離を検知できる
  • 認証はリソースプリンシパルで行え、鍵を構成に埋め込まずに OCI を操作できる
  • 構成は ZIP・Object Storage・Git・テンプレートから取り込め、機密値は Vault(Secrets) を使う
  • Resource Manager 自体の利用は基本無料で、課金は作成したリソース側に発生する

関連サービス・比較

OCI Resource Manager と、相当する AWS のサービスである CloudFormation を比較します。最大の違いは、テンプレート言語が独自仕様か標準 Terraform かという点です。

観点OCI Resource ManagerAWS CloudFormation
位置づけマネージド Terraform による IaC独自テンプレートによる IaC
記述言語標準 Terraform(HCL)CloudFormation テンプレート(JSON/YAML)
管理単位スタックスタック
変更確認plan ジョブで事前に差分を算出Change Set で事前差分を確認
状態管理state をマネージドに保管・ロックサービスが状態を内部管理
ドリフト検出ありあり
認証リソースプリンシパル(鍵レス)IAM ロール
マルチクラウドTerraform なので他クラウドも記述可原則 AWS 専用

なお OCI 内では、構成変更の通知連携に Events / Notifications、機密値の保管に Vault(Secrets)、操作監査に Audit を組み合わせて使います。

ハンズオン / CLI例

oci resource-manager コマンドで、スタックの作成からジョブ実行までを行えます。次は Object Storage 上の構成 ZIP からスタックを作り、plan と apply を実行する例です。

# 1) Terraform 構成(ZIP)からスタックを作成する
#    rm-stack 用の権限とリソースプリンシパルでの実行を前提にする
oci resource-manager stack create \
  --compartment-id "$COMPARTMENT_OCID" \
  --display-name "network-baseline" \
  --description "VCN and subnets via Terraform" \
  --config-source ./network-baseline.zip \
  --variables '{"region":"ap-tokyo-1","vcn_cidr":"10.0.0.0/16"}'

# 2) 変更計画(plan)ジョブを実行し、これから起きる差分を確認する
oci resource-manager job create-plan-job \
  --stack-id "$STACK_OCID"

# 3) plan の内容を確認してから apply ジョブを実行する
#    apply-job-plan-resolution で「どの plan を適用するか」を指定できる
oci resource-manager job create-apply-job \
  --stack-id "$STACK_OCID" \
  --apply-job-plan-resolution '{"isUseLatestJobId": true}'

# 4) ジョブの実行ログを取得して結果を確認する
oci resource-manager job get-job-logs \
  --job-id "$JOB_OCID" --output table

# 5) 検証環境を片付ける(destroy)。本番では権限分離・承認フローで保護する
oci resource-manager job create-destroy-job \
  --stack-id "$STACK_OCID"

OCI Service

OCI Resource Managerを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

管理・ガバナンス

比較で見る軸

クラウド: OCI / カテゴリ: 管理・ガバナンス / 難易度: intermediate

導入後に効く点

スタック単位で plan/apply/destroy し状態とドリフトを内蔵管理。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
OCI
カテゴリ
管理・ガバナンス
難易度
intermediate
関連資格
設計柱
operational / reliability

判断チェックリスト

  • 自社の用途が「管理・ガバナンス / operational」に近いか確認する。
  • 強みである「Terraform をマネージド実行する OCI 標準の IaC サービス。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

管理・ガバナンスoperationalreliability