リソース・マネージャの概要

リソース・マネージャは、Oracle Cloud Infrastructureリソースのプロビジョニング処理を自動化できるOracle Cloud Infrastructureサービスです。Terraformを使用する場合、リソース・マネージャでは、「infrastructure-as-code」モデルを使用してリソースをインストール、構成および管理できます。

Terraform構成は、宣言的な構成ファイルのインフラストラクチャを調整します。リソース・マネージャを使用すると、複数のチームおよびプラットフォームにわたってインフラストラクチャ構成と状態ファイルを共有および管理できます。このインフラストラクチャ管理は、ローカルTerraformインストールおよびOracle Terraformモジュールでのみ実行できません。Oracle Cloud Infrastructure Terraformプロバイダの詳細は、Terraformプロバイダを参照してください。Terraformおよび「infrastructure-as-code」モデルの概要は、https://www.terraform.ioを参照してください。

主な概念

次に、リソース・マネージャの主な概念およびコンポーネントの簡単な説明を示します。

構成
インフラストラクチャを調整するための情報。指定のスタック内のOracle Cloud Infrastructureリソースを指定するには、構成を使用します。たとえば、リソース・メタデータ、データ・ソース定義および変数宣言を指定します。各Terraform構成ファイルは、HashiCorp Configuration Language (HCL)形式またはJSON形式のいずれかで、ファイルの拡張子(.tfまたは.tf.json)で示されます。
リソース・マネージャでサポートされているTerraform構成ソースについては、「Terraform構成の格納場所」を参照してください。
構成の例は、Terraformプロバイダの例およびテンプレートを参照してください。詳細は、リソース・マネージャのTerraform構成およびオーサリング構成を参照してください。また、Hashicorp:構成も参照してください。
構成ソース・プロバイダ
Terraform構成ファイルが格納されているソース・コード制御システムへの接続情報。構成ソース・プロバイダを使用して、バージョン管理されたリモートのTerraform構成ファイルからスタックを作成します。
構成ソース・プロバイダには、次のタイプがあります: 
構成ソース・プロバイダには、次のライフサイクル状態があります:
  • アクティブ: 構成ソース・プロバイダは使用可能です。
詳細は、構成ソース・プロバイダの管理およびスタックを作成するにはを参照してください。

CI/CDパイプラインでのクラウド・プロビジョニングにCLIを使用する手順は、「クラウドでのIaCの使用: CI/CDパイプラインへのTerraformおよびリソース・マネージャの統合- OCI CLIを使用した構築」を参照してください。

ドリフト
インフラストラクチャの現実世界での実際の実際の状態とスタックの最終実行構成との差異。たとえば、チーム・メンバーがリソースに本番タグを追加したとき、またはリソースに障害が発生したときにドリフトが発生します。ドリフト検出レポートを実行して、プロビジョニングされたリソースの状態が、スタックの最終実行構成で定義されている状態と異なるかどうかを確認できます。各リソースの詳細なドリフト・ステータスを表示することもできます。
ジョブ
構成に定義されているアクションを実行する手順。特定のスタック上で実行できるジョブは、一度に1つのみです。さらに、Oracle Cloud Infrastructureリソースのセットは、特定のスタック上に1セットのみ持つことができます。別のリソース・セットをプロビジョニングするには、個別のスタックを作成し、別の構成を使用する必要があります。
リソース・マネージャには、次のジョブ・タイプがあります:
  • 計画: Terraform構成を解析して、関連するスタックの実行計画を作成します。実行計画では、Oracle Cloud Infrastructureリソースのプロビジョニングに計画されている特定のアクションの順序がリストされます。実行計画は適用ジョブに渡され、その適用ジョブによって手順が実行されます。
  • 適用Oracle Cloud Infrastructureリソースを作成(または変更)するために、実行計画を関連するスタックに適用します。指定されたリソースの数およびタイプに応じて、特定の適用ジョブには時間がかかる場合があります。ジョブの実行中に、ステータスを確認できます。
  • 破棄。スタックに関連付けられたリソースを解放します。解放済のリソースは削除されません。たとえば、スタックによって制御されるコンピュート・インスタンスを終了します。スタックのジョブ履歴および状態は、破棄ジョブの実行後も残ります。スタックのログ・ファイルを調べることで、ステータスをモニターし、破棄ジョブの結果を確認できます。
  • 状態のインポート。指定されたTerraform状態ファイルをスタックの現在の状態として設定します。このジョブを使用して、ローカルのTerraform環境をリソース・マネージャに移行します。
ジョブには、関連付けられたスタックに関する履歴が格納されます。たとえば、計画ジョブは、生成された実行計画を格納し、ジョブ・ストア構成(スナップショット)および状態ファイルを適用します。ジョブは、関連付けられているスタックと同じコンパートメントに存在します。OCIDが各ジョブに割り当てられます。
ジョブには、次のライフサイクル状態があります:
  • 受入れ済:ジョブは処理のために受け入れられました。
  • 進行中: ジョブは現在実行中です。
  • 失敗: ジョブの実行が完了しませんでした。
  • 成功: ジョブの実行が完了しました。
  • 取消中: ジョブは取消中です。
  • 取消済: ジョブは取り消されました。
モジュール
関連するリソースのグループ。モジュールを使用して軽量および再利用可能な抽象を作成し、アーキテクチャという観点からインフラストラクチャを記述できます。詳細は、モジュールの作成を参照してください。
package
通常、サポートされているプロバイダ(GitHubなど)に格納されているTerraform構成への.zipファイル。詳細は、「Oracle Cloudへのデプロイ」ボタンの使用を参照してください。
リソース検出
デプロイされたOracle Cloud InfrastructureリソースをTerraformの構成および状態ファイルとして取得する機能。詳細は、リソース検出を参照してください。
スタック
特定のTerraform構成に対応するOracle Cloud Infrastructureリソースのコレクション。各スタックは、指定したコンパートメントの単一のリージョンに存在しますが、指定したスタック上のリソースは複数のリージョンにデプロイできます。OCIDが各スタックに割り当てられます。
スタックの作成ステップは、スタックを作成するにはを参照してください。リソース・マネージャでサポートされているTerraform構成ソースについては、「Terraform構成の格納場所」を参照してください。
スタックには、次のライフサイクル状態があります:
  • 作成中: スタックを作成中です。
  • アクティブ: スタックは使用可能です。
  • 削除中: スタックは削除中です。
  • 削除済: スタックは削除されました。
  • 失敗: スタックを作成できませんでした。
状態
リソース構成の状態で、状態ファイル(.tfstate)の JSON形式で格納されます。詳細は、State Managementを参照してください。
template
事前作成済Terraform構成。一般的なシナリオで使用される一連のリソースをプロビジョニングします。テンプレートは、Oracleまたはテナンシ内のユーザーによってプライベート・テンプレートとして提供されます。テンプレートからスタックを作成するには、スタックを作成するにはを参照してください。詳細は、テンプレートを参照してください。

プライベート・テンプレートを作成するには、プライベート・テンプレートの管理を参照してください。

特徴

テンプレート

テンプレートは、インフラストラクチャの管理に使用できるTerraform構成です。テンプレートは、Infrastructure as Codeを初めて使用するユーザーと、本番ワークフロー構成を更新しているユーザーに役立ちます。テンプレートを使用してリソース・マネージャを試し、実績のあるベスト・プラクティスを本番ワークフロー構成に適用します。Oracle提供のテンプレートの詳細は、テンプレートを参照してください。

テナンシ内の他のユーザーと共有するための独自のプライベート・テンプレートを作成します。

リソース作成ページで開始

構成をリソース構成ページからスタックに保存します。スタックを使用して、「infrastructure-as-code」モデルを介してリソースをインストール、構成および管理します。サポートされるリソース構成ページ: コンピュート・インスタンスの作成

リソース・マネージャによるCI/CD

GitHub、GitLabなどの統合ソース・コード制御システムを使用して、Terraform構成をリモートに格納します。この統合によって、継続的インテグレーションと継続的デリバリ(CI/CD)の達成を支援します。

構成のリモート格納の詳細は、構成ソース・プロバイダの管理を参照してください。

CI/CDパイプラインでのクラウド・プロビジョニングにCLIを使用したウォークスルーについては、クラウドのIaC: Terraformおよびリソース・マネージャのCI/CDパイプラインへの統合- OCI CLIによる構築を参照してください。

また、Terraform構成をオブジェクト・ストレージ・バケットに格納することもできます。詳細は、スタックの作成手順のバケット・ステップを参照してください。

リソース・ディスカバリ

デプロイされたリソースをTerraformの構成および状態ファイルとして取得する機能。この機能を使用して次のことを実行できます。

  • 手動管理インフラストラクチャからリソース・マネージャ制御インフラストラクチャに移行します。
  • TerraformがHashiCorp Configuration Language (HCL)構文を使用してOracle Cloud Infrastructureリソースを表す方法を学習します。
  • 別のコンパートメントに既存のインフラストラクチャを複製または再構築します。
状態管理

リソース・マネージャは、スタックのTerraform状態ファイルを格納するため、必要がありません。スタック状態がロックされているため、複数のユーザーがスタック上で同時に作業できます。これにより、特定のスタックで一度に1つのジョブのみを実行できます。リソース・マネージャは、スタックの状態ファイル(.tfstate、JSON形式)を自動的に生成および更新します。このファイルによって、スタックのリソースが構成にマップされ、リソースの依存関係などの必須の構成メタデータが維持されます。

Terraform状態ファイルの詳細は、Hashicorp:状態を参照してください。

盗難検出

プロビジョニングされたリソースの状態が、スタックの最終実行構成で定義されたリソースと異なるかどうかを確認し、各リソースの詳細なドリフト・ステータスを表示します。

オプションで、ドリフト検出を指定されたリソースに制限できます。各リソースはリソース・アドレスで識別されます。これは、スタックのTerraform構成で指定されたリソース・タイプおよび名前から導出された文字列と、オプションの索引です。たとえば、名前がtest_instanceの4番目のコンピュート・インスタンスのリソース・アドレスは、oci_core_instance.test_instance[3]です(リソース・タイプはoci_core_instance、ピリオドはデリミタ、リソース名はtest_instance、索引はカッコ内の3)。リソース・アドレスの詳細および例は、https://www.terraform.io/docs/internals/resource-addressing.html#examplesにあるTerraformのドキュメントを参照してください。

「Oracle Cloudへのデプロイ」ボタン

「Oracle Cloudにデプロイ」ボタンを使用すると、リソース・マネージャで使用可能なスタックの作成ワークフローを使用してリモートTerraform構成を起動できます。

この図は、「Oracle Cloudにデプロイ」ボタンを示しています。

詳細は、「Oracle Cloudへのデプロイ」ボタンの使用を参照してください。

可用性

リソース・マネージャ・サービスは、すべてのOracle Cloud Infrastructure商用リージョンで使用できます。使用可能なリージョンのリストと、関連する場所、リージョン識別子、リージョン・キーおよび可用性ドメインは、リージョンおよび可用性ドメインについてを参照してください。

全般ワークフロー

次のイメージは、リソース・マネージャ・ワークフローの一般的なビューを表しています。

このイメージは、リソース・マネージャを使用するプロビジョニング・インフラストラクチャのワークフローを示しています。

次のステップのリンクはコンソールの指示を参照しますが、API(CLIまたはその他のツールを使用)を使用して同じタスクを実行できます。

  1. Terraform構成を作成します。

    ノート リソース・マネージャでサポートされているTerraform構成ソース

    については、「Terraform構成の格納場所」を参照してください。
  2. スタックを作成します。
  3. 実行計画を生成する計画ジョブを実行します。
  4. 実行計画を確認します。
  5. 実行計画で変更が必要な場合は、構成を更新して計画ジョブを再度実行します。
  6. リソースをプロビジョニングするために適用ジョブを実行します。
  7. 必要に応じて状態ファイルとログ・ファイルを確認します。
  8. 適用ジョブを再実行することによって、構成を変更の有無にかかわらずオプションで再適用できます。
  9. オプションで、スタック上で実行されているリソースを解放するには、破棄ジョブを実行します。

リソース・マネージャ・ワークフローの詳細は、「スタート・ガイド」を参照してください。

リソース・マネージャへのアクセス方法

リソース・マネージャ・サービスには、コンソール(ブラウザベースのインタフェース)またはREST APIを使用してアクセスできます。コンソールおよびAPIのための手順は、このガイド全体を通してトピックに含まれています。使用可能なSDKのリストは、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。

コンソール: コンソールを使用してリソース・マネージャにアクセスするには、サポートされているブラウザを使用する必要があります。このページの上部にある「コンソール」リンクを使用して、サインイン・ページに移動できます。クラウド・テナント、ユーザー名およびパスワードの入力を求められます。ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「スタック」をクリックします。

API: APIを介してリソース・マネージャにアクセスするには、リソース・マネージャAPIを使用します。コマンドライン・インタフェース(CLI)を使用してこのAPIにアクセスするには、oci resource-manager指定を使用します。

デフォルト・プロバイダ

デフォルトでリソース・マネージャはOracle Cloud InfrastructureのTerraformプロバイダであるterraform-provider-ociをサポートしています。

サポートされているサード・パーティのTerraformプロバイダについては、「サポートされているプロバイダ」を参照してください。

認証と認可

Oracle Cloud Infrastructureの各サービスは、すべてのインタフェース(コンソール、SDKまたはCLI、およびREST API)の認証および認可のためにIAMと統合されています。

組織の管理者は、どのユーザーがどのサービスとリソースにアクセスできるか、およびアクセスのタイプを制御する、グループコンパートメントおよびポリシーを設定する必要があります。たとえば、ポリシーは、新しいユーザーの作成、クラウド・ネットワークの作成と管理、インスタンスの起動、バケットの作成、オブジェクトのダウンロードなどを実行できるユーザーを制御します。詳細は、ポリシーの開始を参照してください。異なる各サービスに対するポリシーの記述の詳細は、ポリシー・リファレンスを参照してください。

会社が所有するOracle Cloud Infrastructureリソースを使用する必要がある通常のユーザー(管理者ではない)の場合は、ユーザーIDを設定するよう管理者に連絡してください。管理者は、使用する必要があるコンパートメントを確認できます。

重要

Oracle Cloud Infrastructureリソースを管理するためのポリシーは、リソースにアクセスするリソース・マネージャ操作にも必要です。たとえば、コンピュート・インスタンスおよびサブネットを含むスタック上で適用ジョブを実行するには、リソースをプロビジョニングするコンパートメント内で、これらのリソース・タイプに対する権限を付与するポリシーを必要とします。Oracle Cloud Infrastructureリソースを管理するためのポリシーの例は、共通ポリシーを参照してください。

管理者:グループにリソース・マネージャ・リソースへのアクセス権を付与する共通ポリシーについては、IAMポリシー(リソース・マネージャの保護)を参照してください。