リソース・マネージャの概要
リソース・マネージャを使用して、Oracle Cloud Infrastructureリソースのデプロイメントと操作を自動化します。サポートされているInfrastructure as Code (IaC)ツールを使用すると、DevOpsエンジニアはインフラストラクチャをどこでも開発およびデプロイできます。
Terraform構成は、宣言的な構成ファイルのインフラストラクチャを調整します。リソース・マネージャを使用すると、複数のチームおよびプラットフォームにわたってインフラストラクチャ構成と状態ファイルを共有および管理できます。このインフラストラクチャ管理は、ローカルTerraformインストールおよびOracle Terraformモジュールでのみ実行できません。Oracle Cloud Infrastructure Terraformプロバイダの詳細は、Terraform Providerを参照してください。Terraformおよび「infrastructure-as-code」モデルの概要は、Terraformコミュニティを参照してください。
Resource Managerは、Federal Information Processing Standard (FIPS)に準拠しています。米国政府リージョンのOCIの詳細は、Oracle Cloud Infrastructure US Government Cloudを参照してください。
主な概念
次に、リソース・マネージャの主な概念およびコンポーネントの簡単な説明を示します。
- 構成
- インフラストラクチャを調整するための情報。指定のスタック内のOracle Cloud Infrastructureリソースを指定するには、構成を使用します。たとえば、リソース・メタデータ、データ・ソース定義および変数宣言を指定します。各Terraform構成ファイルは、HashiCorp構成言語(HCL)形式またはJSON形式です。HCL形式のファイルは、ファイル拡張子
.tf
を使用します。JSON形式のファイルは、ファイル拡張子.tf.json
を使用します。 - 構成ソース・プロバイダ
- Terraform構成ファイルが格納されているソース・コード制御システムへの接続情報。構成ソース・プロバイダを使用して、バージョン管理されたリモートのTerraform構成ファイルからスタックを作成します。
- ドリフト
- インフラストラクチャの実際の現実世界の状態とスタックの最終実行構成間の差異。たとえば、チーム・メンバーがリソースに本番タグを追加したとき、またはリソースに障害が発生したときにドリフトが発生します。ドリフト検出レポートを実行して、プロビジョニングされたリソースの状態が、スタックの最終実行構成で定義されているリソースと異なるかどうかを確認できます。各リソースの詳細なドリフト・ステータスを表示することもできます。
- ジョブ
- 構成に定義されているアクションを実行する手順。特定のスタック上で実行できるジョブは、一度に1つのみです。さらに、Oracle Cloud Infrastructureリソースのセットは、特定のスタック上に1セットのみ持つことができます。別のリソース・セットをプロビジョニングするには、個別のスタックを作成し、別の構成を使用する必要があります。
- モジュール
- 関連するリソースのグループ。モジュールを使用して軽量および再利用可能な抽象を作成し、アーキテクチャという観点からインフラストラクチャを記述できます。詳細は、モジュールの作成を参照してください。
- パッケージ
- 通常、サポートされているプロバイダに格納されているTerraform構成への.zipファイル(GitHubなど)。詳細は、「Oracle Cloudにデプロイ」ボタンの使用を参照してください。
- プライベート・エンドポイント
- 非パブリック・リソースに接続するためのネットワーク情報。詳細は、プライベート・エンドポイントの管理を参照してください。
- リソース検出
- デプロイされたOracle Cloud InfrastructureリソースをTerraformの構成および状態ファイルとして取得する機能。詳細は、リソース検出を参照してください。
- スタック
- 特定のTerraform構成に対応するOracle Cloud Infrastructureリソースのコレクション。各スタックは、指定したコンパートメントの単一のリージョンに存在しますが、指定したスタック上のリソースは複数のリージョンにデプロイできます。OCIDが各スタックに割り当てられます。
- 状態
- リソース構成の状態で、状態ファイル(
.tfstate
)にJSON形式で格納されます。詳細は、状態管理を参照してください。
- 型板
- 共通シナリオで使用される一連のリソースをプロビジョニングする、事前構築済のTerraform構成。テンプレートは、Oracleまたはテナンシ内のいずれかのユーザーがプライベート・テンプレートとして提供できます。テンプレートからスタックを作成するには、テンプレートからのスタックの作成を参照してください。詳細は、Oracle提供のテンプレートを参照してください。
機能
テンプレートは、インフラストラクチャの管理に使用できるTerraform構成です。テンプレートは、コードとしてのインフラストラクチャを初めて使用し、本番ワークフローの構成を更新するお客様を支援します。テンプレートを使用して、リソース・マネージャを試し、実績のあるベスト・プラクティスを本番ワークフロー構成に適用します。Oracle提供のテンプレートの詳細は、Oracle提供のテンプレートを参照してください。
テナンシ内の他のユーザーと共有する独自のプライベート・テンプレートを作成します。
リソース構成ページからスタックに構成を保存します。スタックを使用して、"infrastructure-as-code"モデルを介してリソースをインストール、構成および管理します。詳細は、リソース作成ページからのスタックの作成を参照してください。
Bitbucket Cloud、Bitbucketサーバー、DevOps、GitHub、GitLabなどの統合ソース・コード制御システムを使用して、Terraform構成をリモートに格納します。この統合は、継続的な統合と継続的な配信(CI/CD)の実現に役立ちます。
詳細は、次を参照してください:
CI/CDパイプラインでのクラウド・プロビジョニングにCLIを使用したウォークスルーは、クラウドのIaC: TerraformおよびResource ManagerのCI/CDパイプラインへの統合- OCI CLIによる構築を参照してください。
また、Terraform構成をObject Storageバケットに格納することもできます。詳細は、バケットからのスタックの作成を参照してください。
Resource Managerでは、スタックのTerraform状態ファイルが格納されるため、必要なしにできます。リソース・マネージャがスタック状態をロックし、特定のスタックで同時に実行できるジョブは1つのみであるため、複数のユーザーがスタックで同時に作業できます。リソース・マネージャは、スタックの状態ファイル(JSON形式の.tfstate
)を自動的に生成および更新します。このファイルは、スタックのリソースを構成にマップし、リソースの依存関係などの必須の構成メタデータを保持します。
Terraform状態ファイルの詳細は、状態を参照してください。
プロビジョニングされたリソースの状態が、スタックの最終実行構成で定義されたリソースと異なるかどうかを確認し、各リソースの詳細なドリフト・ステータスを表示します。
オプションで、ドリフト検出を指定されたリソースに制限できます。各リソースは、リソース・アドレスによって識別されます。リソース・アドレスは、スタックのTerraform構成で指定されたリソース・タイプと名前、およびオプションの索引から導出された文字列です。たとえば、名前がtest_instanceの4番目のコンピュート・インスタンスのリソース・アドレスはoci_core_instance.test_instance[3]
です。リソース・タイプはoci_core_instance
、ピリオドはデリミタ、リソース名はtest_instance
、索引はカッコで囲まれた3
です。リソース・アドレスの詳細および例は、Terraformのドキュメント(例)を参照してください。
「Oracle Cloudにデプロイ」ボタンを使用すると、リソース・マネージャで使用可能なスタックの作成ワークフローを使用して、リモートTerraform構成を起動できます。
詳細は、「Oracle Cloudにデプロイ」ボタンの使用を参照してください。
プライベート・エンドポイントを使用すると、テナンシ内の非パブリック・クラウド・リソースにリソース・マネージャからアクセスできます。たとえば、プライベート・インスタンスでリモート実行を使用するか、プライベートGitHubサーバーのTerraform構成にアクセスします。
一般的なシナリオなどの詳細は、プライベート・エンドポイントの管理を参照してください。
Object Storageを使用して、カスタムTerraformプロバイダを指定できます。カスタム・プロバイダをバケットに追加するには、オブジェクト・ストレージへのデータの格納を参照してください。バケットからカスタム・プロバイダをフェッチするには、「スタックでのカスタム・プロバイダの使用」を参照してください。
依存関係ロックファイルは、新しいスタックおよび更新されたスタックに対して自動的に管理されます。Terraformプロバイダの構成済ソースから使用可能な最新バージョンをいつ取得するかを決定します。プロバイダは、Terraform構成のバージョン制約内で更新されます。手順については、「最新のプロバイダの取得」を参照してください。
スタックを以前の既知の状態にロールバックします。ロールバックは、スタックの不明な状態のトラブルシューティングに時間を費やすのに適した代替手段です。
ロールバックするには、まず、成功した適用ジョブを特定します。このターゲット・ジョブは、別のTerraform構成を使用します。このターゲット・ジョブの計画ロールバック・ジョブを作成し、生成された実行計画を使用して適用ロールバック・ジョブを作成します。
可用性
リソース・マネージャ・サービスは、すべてのOracle Cloud Infrastructure商用リージョンで使用できます。使用可能なリージョンのリストと、関連する場所、リージョン識別子、リージョン・キーおよび可用性ドメインは、リージョンおよび可用性ドメインについてを参照してください。
全般ワークフロー
次のイメージは、リソース・マネージャ・ワークフローの一般的なビューを表しています。
- スタックを作成します。
- 実行計画を生成する計画ジョブを実行します。
- 実行計画(ジョブ・ログ)を確認します。
- 実行計画で変更が必要な場合は、構成を更新して計画ジョブを再度実行します。
- リソースをプロビジョニングするために適用ジョブを実行します。
- 必要に応じて状態ファイルおよびログ・ファイルを確認します。
- 適用ジョブを再実行することによって、構成を変更の有無にかかわらずオプションで再適用できます。
- オプションで、スタック上で実行されているリソースを解放するには、破棄ジョブを実行します。
リソース・マネージャ・ワークフローの詳細なウォークスルーは、スタート・ガイドを参照してください。
リソース・マネージャへのアクセス方法
リソース・マネージャ・サービスには、コンソールまたはリソース・マネージャREST APIを使用してアクセスできます。コンソール、APIおよびCLIの使用手順は、このドキュメント全体のトピックに記載されています。使用可能なSDKのリストは、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。
コンソール: コンソールを使用してリソース・マネージャにアクセスするには、サポートされているブラウザを使用する必要があります。コンソールのサインイン・ページに移動するには、このページの上部にあるナビゲーション・メニューを開き、「Infrastructureコンソール」をクリックします。クラウド・テナント、ユーザー名およびパスワードの入力を求められます。ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「概要」をクリックします。
API: APIを介してリソース・マネージャにアクセスするには、リソース・マネージャAPIを使用します。
CLI: Resource Managerのコマンドライン・リファレンスを参照してください。
デフォルト・プロバイダ
デフォルトでは、Resource Managerは、Oracle Cloud InfrastructureのTerraformプロバイダであるterraform-provider-oci
をサポートしています。
サポートされているサードパーティTerraformプロバイダについては、サポートされているTerraformプロバイダを参照してください。
認証と認可
Oracle Cloud Infrastructureの各サービスは、すべてのインタフェース(コンソール、SDKまたはCLI、およびREST API)の認証および認可のためにIAMと統合されています。
組織の管理者は、どのユーザーがどのサービスとリソースにアクセスできるか、およびアクセスのタイプを制御する、グループ、コンパートメントおよびポリシーを設定する必要があります。たとえば、ポリシーは、新規ユーザーの作成、クラウド・ネットワークの作成と管理、インスタンスの起動、バケットの作成、オブジェクトのダウンロードなどを実行できるユーザーを制御します。詳細は、ポリシーの開始を参照してください。異なる各サービスに対するポリシーの記述の詳細は、ポリシー・リファレンスを参照してください。
会社が所有するOracle Cloud Infrastructureリソースを使用する必要がある通常のユーザー(管理者ではない)の場合は、ユーザーIDを設定するよう管理者に連絡してください。管理者は、使用する必要があるコンパートメントを確認できます。
Oracle Cloud Infrastructureリソースを管理するためのポリシーは、リソースにアクセスするリソース・マネージャ操作にも必要です。たとえば、コンピュート・インスタンスおよびサブネットを含むスタック上で適用ジョブを実行するには、リソースをプロビジョニングするコンパートメント内で、これらのリソース・タイプに対する権限を付与するポリシーを必要とします。Oracle Cloud Infrastructureリソースを管理するためのポリシーの例は、共通ポリシーを参照してください。
管理者: リソース・マネージャ・リソースへのアクセス権をグループに付与する共通ポリシーについては、IAMポリシー(リソース・マネージャの保護)を参照してください。
セキュリティ
IAMポリシーの作成に加えて、リソース・マネージャのセキュリティに関する次のベスト・プラクティスに従ってください。
- 構成ファイルおよび出力ファイルでの機密情報の使用を制限します。
- セキュリティ監査を実行します
- プライベート・エンドポイントを使用して、ネットワーク・トラフィックをパブリックに公開せずにリソースに安全にアクセスします
「リソース・マネージャの保護」を参照してください。
リソース・マネージャのリソースの制限
リソース・マネージャの制限を参照してください。
適用可能な制限のリストと制限の引上げをリクエストする手順は、サービス制限を参照してください。リソースまたはリソース・ファミリにコンパートメント固有の制限を設定するために、管理者は、コンパートメント割当てを使用できます。