リソース検出によるスクリプトおよび状態ファイルの作成
コンパートメント内の既存のリソースのTerraformファイルを生成します。
OCIリソース検出機能を使用して、次のことを行います。
- コンソールで既存のリソースの状態ファイルを作成し、それらのリソースをTerraform設定に追加します。
- 既存のインフラストラクチャを新しいテナントまたはリージョンで複製します。
- 更新されたリソースの状態ドリフトを検出します。
このチュートリアルでは、リソース検出機能を使用して、アカウント内のリソースのスクリプトおよび状態ファイルを作成します。次に、Terraformを使用してリソースを管理します。
主なタスクは:
- コンソールを使用してリソースを作成します。
- リソース検出機能を使用して、リソースのスクリプトおよび状態ファイルを作成します。
- Terraformでリソースを更新します。
- コンソールでリソースが更新されたことを確認します。

詳細は、次を参照してください:
開始前
このチュートリアルを正常に実行するには、次が必要です:
- Oracle Cloud Infrastructureアカウント。無料Oracle Cloudプロモーションのリクエストおよび管理を参照してください。
- MacOS、LinuxまたはWindowsコンピュータ。
- Terraformチュートリアル・リソース:
- リソース検出の設定のすべてのステップを実行します。
- OCI Terraformプロバイダ・コマンドをノートにとります:
- クラウド・シェル:
/usr/bin
からのterraform-provider-oci_<version>
- コンピュート・インスタンスまたはローカル環境: コマンド
terraform-provider-oci_<version>
のかわりに使用するには、前のチュートリアルで作成した<shorter-alias>
を使用します。- 例:
tf-oci
- 例:
- クラウド・シェル:
- Terraform v1.1.3+:
- Cloud Shellを使用している場合は、Terraformをインストールする必要はありません。Terraformはすでにインストールされています。
- コンピュート・インスタンスまたはローカル環境を使用している場合は、Terraformのインストールのステップに従います。
1. リソースの作成
コンソールを使用してテナンシにバケットを作成します。このバケットにはTerraformスクリプトがありません。後で、リソース検出を使用して、バケットのTerraformスクリプトおよび状態ファイルを作成します。
ユーザー名がAdministrators
グループ内にある場合は、この項をスキップしてください。それ以外の場合は、テナンシに次のポリシーを追加するよう管理者に依頼してください:
allow group <a-group-your-username-belongs-to> to manage compartments in tenancy
この権限を持つユーザーは、チュートリアルのすべてのリソースのコンパートメントを作成できます。
- Oracle Cloudコンソールにサインインします。
- ナビゲーション・メニューで、「プロファイル」メニュー
を選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します。
- 表示されるオプションに応じて、「グループ」または「自分のグループ」を選択します。
- メモ帳で、ユーザー名が属するグループの名前をコピーします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」にある「ポリシー」を選択します。
- コンパートメントを選択します:
<your-tenancy>(root)
- 「ポリシーの作成」を選択します。
- 「ポリシーの作成」ページで、次の値を入力します:
- 名前:
manage-compartments
- 説明:
Allow the group <a-group-your-username-belongs-to> to list, create, update, delete and recover compartments in the tenancy.
- コンパートメント:
<your-tenancy>(root)
- 名前:
- 「ポリシー・ビルダー」で、「手動エディタの表示」を選択します。
- 次のポリシーを貼り付けます:
allow group <a-group-your-username-belongs-to> to manage compartments in tenancy
- 「作成」を選択します。
リファレンス: 動詞とリソース・タイプの組合せの詳細(compartments
リソース・タイプを参照)
このチュートリアルで作成するリソースのコンパートメントを作成します。
- コンソールで、ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」で、「コンパートメント」を選択します。
- 「コンパートメントの作成」を選択します。
- 次の値を入力します:
- 名前:
<your-compartment-name>
- 説明:
Compartment for <your-description>.
- 親コンパートメント:
<your-tenancy>(root)
- 名前:
- 「コンパートメントの作成」を選択します。
参照: コンパートメントの作成
ユーザー名がAdministrators
グループ内にある場合は、この項をスキップしてください。それ以外の場合は、テナンシに次のポリシーを追加するよう管理者に依頼してください:
allow group <a-group-your-username-belongs-to> to manage all-resources in compartment <your-compartment-name>
この権限を使用すると、コンパートメント内のすべてのリソースを管理でき、そのコンパートメントでの管理権限が付与されます。
- コンソールで、ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」にある「ポリシー」を選択します。
- コンパートメントを選択します。
- 「ポリシーの作成」を選択します。
- 「ポリシーの作成」ページで、次の値を入力します:
- 名前:
manage-<your-compartment-name>-resources
- 説明:
Allow users to list, create, update, and delete resources in <your-compartment-name>.
- コンパートメント:
<your-tenancy>(root)
- 名前:
- 「ポリシー・ビルダー」に、次の値を入力します:
- ポリシー・ユース・ケース:
コンパートメント管理
- 共通ポリシー・テンプレート:
コンパートメント管理者がコンパートメントを管理できるようにします
- アイデンティティ・ドメイン: <identity-domain>
- グループ:
<a-group-your-username-belongs-to>
- 場所:
<your-compartment-name>
- ポリシー・ユース・ケース:
- 「作成」を選択します。
参照: 共通ポリシー
コンパートメントにバケットを作成します。
<your-compartment-name>
にバケットを作成していることを確認してください。2. リソースの検出
コンパートメントに作成したバケットを検出します。
- Usage (Resource Discovery)に進みます。
2つのコマンドオプションが表示されます。
compartment_name
をベース・コマンドとして使用するコマンド・オプションを選択します。terraform-provider-oci -command=export -compartment_name=<xxx> -output_path=<xxx>
- ベース・コマンドを更新します:
terraform-provider-oci
のかわりに、シンボリック・リンク・コマンドを使用します:tf-oci
- パラメータの説明の項を確認して、ベース・コマンドのパラメータに適切な値を追加します:
- exportコマンドを使用して、リソース検出を実行します:
-command=export
- リソースを検出するコンパートメントの名前を入力します:
-compartment_name=<your-compartment-name>
- 検出されたリソースのディレクトリを作成してから指定します:
例:
-output_path=$HOME/resource-discovery
- exportコマンドを使用して、リソース検出を実行します:
- パラメータの説明の項の次のパラメータをベース・コマンドに追加します:
services
services
にリストされているサービス名から:object_storage
- 例:
-services=object_storage
- 複数のサービスを検出するには、サービス名をカンマで区切ります。
- 例:
-services=object_storage,core
- サービス名を囲む引用符は必要ありません。
- コマンドを作成します:
次に例を示します:
tf-oci -command=export -compartment_name=<your-compartment-name> -services=object_storage -output_path=$HOME/resource-discovery
ノート
トラブルシューティング[ERROR] output_path does not exist: stat /$HOME/resource-discovery: no such file or directory
リソース検出コマンドでは、検出されたリソースのディレクトリは作成されません。ディレクトリを作成し、コマンドにパスを指定します。
[ERROR] no output directory specified
パーサーは、ダッシュのないパラメータで停止します。各パラメータの先頭にダッシュが追加されていることを確認します。たとえば、
-services
のかわりにservices
を使用すると、パーサーは出力ディレクトリに到達しません。
3. リソースの更新
object_storage.tf
ファイルでバケットの名前を更新し、Terraformスクリプトを実行します。アカウントがスクリプトを認証してから、Terraformがバケット名を更新します。コンソールで新しいバケット名を確認します。
バケットの更新
- Terraformスクリプトを実行します:
terraform apply
- 確認を求められた場合は、置換するバケット名に
yes
を入力します。出力例:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
コンソールでの新規バケット名の検索
- ナビゲーション・メニューを開き、「ストレージ」を選択します。「オブジェクト・ストレージおよびアーカイブ・ストレージ」で、「バケット」を選択します。
- コンパートメント
<your-compartment-name>
を選択します。 - バケットのリストで、バケット名を確認します。
バケットの名前は、
<your-bucket-name>-2
になります。
次の処理
その他のTerraformチュートリアルを確認します:
Oracle製品を使用した開発の詳細を確認するには、次のサイトを参照してください: