リソース検出の設定
リソース検出を設定して、コンパートメント内の既存のリソースのTerraformファイルを生成します。
OCIリソース検出機能を使用して、次のことを行います。
- コンソールで既存のリソースの状態ファイルを作成し、それらのリソースをTerraform設定に追加します。
- 既存のインフラストラクチャを新しいテナントまたはリージョンで複製します。
- 更新されたリソースの状態ドリフトを検出します。
このチュートリアルでは、ローカル環境にOracle Cloud Infrastructure Terraformプロバイダのリソース検出機能を設定します。設定を確認するには、リソース検出を実行してテナンシから情報をフェッチし、そのスクリプトを作成します。
主なタスクは:
- RSAキーを作成します。
- Terraform OCIプロバイダ・バイナリをインストールします。
- Terraform OCIプロバイダAPI認証変数を設定します。
- OCIプロバイダCLIコマンドを認証します。
- リソース検出機能を使用して、テナンシの可用性ドメインに関するスクリプトを環境に作成します。

詳細は、ユースケースおよび利点を参照してください。
開始前
このチュートリアルを正常に実行するには、次が必要です:
- Oracle Cloud Infrastructureアカウント。無料Oracle Cloudプロモーションのリクエストおよび管理を参照してください。
- MacOS、LinuxまたはWindows環境:
- MacOS
- Linux (任意のディストリビューション)
- Always Freeコンピュート・シェイプのLinux VMをOracle Cloud Infrastructureにインストールできます:
- Oracle Cloud Infrastructure Cloud Shell:
- Cloud Shellノート
Oracle Cloud Infrastructure Cloud Shellを使用している場合、OCI Terraform Providerはすでにインストールされており、RSAキーを作成する必要はありません。そのセクションをスキップして、Add List Policyに進みます。
- Cloud Shell
- WSLを使用して Windowsに Linuxをインストールする方法 (WSL)
- Linux VMにアクセスするためのGit for Windows。
1. 準備
リソース検出コマンドを認証および実行するための環境を準備します。また、アカウントがコマンドの認証に必要な情報を収集します。
Oracle Cloud InfrastructureアカウントへのAPIサインイン用のRSAキーを作成します。
クラウド・シェルまたはリソース・マネージャを使用している場合は、RSAキーの作成をスキップしてください。OCIコンソールにサインインすると、すでに認証されています。
これで、OCIアカウントに接続するためのRSAキーが設定されました。
- リファレンス
- API署名キーを生成する方法
ユーザー名がAdministrators
グループ内にある場合は、この項をスキップしてください。それ以外の場合は、テナンシに次のポリシーを追加するよう管理者に依頼してください:
allow group <a-group-that-your-username-belongs-to> to read all-resources in tenancy
この権限を持つユーザーは、テナンシ内のすべてのリソースをリストできます。
- Oracle Cloudコンソールにサインインします。
- ナビゲーション・メニューで、「プロファイル」メニュー
を選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します。
- 表示されるオプションに応じて、「グループ」または「自分のグループ」を選択します。
- メモ帳で、ユーザー名が属するグループの名前をコピーします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」にある「ポリシー」を選択します。
- コンパートメントを選択します:
<your-tenancy>(root)
- 「ポリシーの作成」を選択します。
- 「ポリシーの作成」ページで、次の値を入力します:
- 名前:
list-resources
- 説明:
Allow the group <a-group-that-your-username-belongs-to> to list the resources in this tenancy.
- コンパートメント:
<your-tenancy>(ルート)
- 名前:
- 「ポリシー・ビルダー」で、「手動エディタの表示」を選択します。
- 次のポリシーを貼り付けます:
allow group <a-group-that-your-username-belongs-to> to read all-resources in tenancy
- 「作成」を選択します。
参照: 共通ポリシー
Terraform OCIプロバイダ・コマンドの認証に必要な情報を準備し、メモ帳にコピーします。
クラウド・シェルを使用している場合は、次のステップから
<tenancy-ocid>
のみを検索する必要があります。クラウド・シェルを使用している場合は、この項をスキップしてください。
最新バージョンのTerraform OCIプロバイダ・バイナリv4.2以上をインストールします:
2. 認証スクリプトの作成
認証情報をOCIプロバイダ認証変数に割り当てるシェル・スクリプトを作成します。Oracle Cloud Infrastructureアカウントは、これらのパラメータに割り当てられた値を使用してOCIプロバイダ・コマンドを認証します。
- Authentication (Resource Discovery)に進みます。
- APIキー・ベースの認証用に次の環境変数を設定します:
- TF_VAR_tenancy_ocid
- TF_VAR_user_ocid
- TF_VAR_fingerprint
- TF_VAR_private_key_path
- TF_VAR_region
この項では、provider-oci.sh
ファイルを実行して、OCIプロバイダ認証変数を環境変数に追加します。
3. リソースの検出
テナント内の可用性ドメインを検出します。
すべてのテナンシには可用性ドメインのリストがあります。リージョン内の可用性ドメインを検出することで、次のことを確認します:
- Oracle Cloud Infrastructureアカウントは、Oracle Cloud Infrastructureプロバイダ・コマンドを認証できます。
- リソース検出機能を使用して、アカウントから情報を取得できます。
$HOME
ディレクトリに、resource-discovery
というディレクトリを作成します。cd
mkdir resource-discovery
- クラウド・シェルを使用している場合は、インストールされているOCI Terraform Providerファイルを
/usr/bin
ディレクトリで検索します。ls /usr/bin
ファイル名は次のとおりです。
terraform-provider-oci_<version>
サンプル・ファイル名:
terraform-provider-oci_v5.2.1
- 次のコマンドを実行します:
- クラウド・シェルで:
terraform-provider-oci_<version> -command=export -compartment_id=<tenancy-ocid> -services=availability_domain -output_path=$HOME/resource-discovery
- コンピュート・インスタンスまたはローカル環境:
tf-oci -command=export -compartment_id=<tenancy-ocid> -services=availability_domain -output_path=$HOME/resource-discovery
重要
<tenancy-ocid>
を「必要な情報の収集」の情報に置き換えます。- クラウド・シェルを使用している場合は、
terraform-provider-oci_<version>
をステップ2で見つけたファイル名に置き換えます。
サンプル出力:
... INFO <date> [INFO] ===> Generating resource 'oci_identity_availability_domain.export_QnsC-US-ASHBURN-AD-1' INFO <date> [INFO] ===> Generating resource 'oci_identity_availability_domain.export_QnsC-US-ASHBURN-AD-2' INFO <date> [INFO] ===> Generating resource 'oci_identity_availability_domain.export_QnsC-US-ASHBURN-AD-3' ... INFO <date> Found 6 'availability_domain' resources. Generated under '/<home-directory>/resource-discovery/availability_domain.tf'. INFO <date> === COMPLETED ===
ノート
- テナントOCIDは、ルート・コンパートメントのコンパートメントOCIDです。特定の
<compartment-ocid>
または<tenancy-ocid>
を指定すると、同じ可用性ドメインが出力されます。 - アイデンティティ・リソースを検出するために、コンパートメントOCIDを指定する必要はありません。前述の例では、コマンドから
compartment_id
を削除した場合も同じ結果になります。compartment_id
は、他のサービスの構文を学習するためのものです。
- クラウド・シェルで:
- エラー・メッセージ: Failed to query available provider packages:
- VPNを利用している場合は、プロキシーの設定を確認してください。
- 401エラー- (Service error:NotAuthenticated):
- 次のいずれかの値が正しくありません:
- テナンシOCID
- ユーザーOCID
- フィンガープリント
- RSA秘密キー(パスまたはキー)
- 次のいずれかの値が正しくありません:
- そのようなホストはありません:
- 次の値が正しくありません:
- リージョン識別子
- 次の値が正しくありません:
- Usage (Resource Discovery)に進みます。
2つのコマンドオプションが表示されます。
compartment_id
をベース・コマンドとして使用するコマンド・オプションを選択します。terraform-provider-oci -command=export -compartment_id= -output_path=
- ベース・コマンドを更新します:
terraform-provider-oci
のかわりに、シンボリック・リンク・コマンドを使用します:tf-oci
- パラメータの説明の項を確認して、ベース・コマンドのパラメータに適切な値を追加します:
export
コマンドを使用して、リソース検出を実行します:-command=export
- リソースを検出するコンパートメントのOCIDを追加します:
-compartment_id=<tenancy-ocid>
- 検出されたリソースのディレクトリを作成してから指定します:
例:
-output_path=$HOME/resource-discovery
availability_domain
というフレーズを検索し、次の情報を確認します。Resources that are dependent on availability domains will be generated under availability_domain.tf file. These include: oci_core_boot_volume oci_file_storage_file_system oci_file_storage_mount_target oci_file_storage_snapshot
- サービスには、次を使用します:
availability_domain
(サービスではありませんが、サービスと連携します。)- 例:
-services=availability_domain
- サービス名を囲む引用符は必要ありません。
- コマンドを作成します:
次に例を示します:
tf-oci -command=export -compartment_id=<tenancy-ocid> -services=availability_domain -output_path=$HOME/resource-discovery
ノート
リソース検出コマンドでは、検出されたリソースのディレクトリは作成されません。ディレクトリを作成し、コマンドにパスを指定します。
完了!これで、Oracle Cloud Infrastructureアカウントは、Terraform OCIプロバイダ・コマンドを認証できます。また、ご使用の環境でリソース検出コマンドを実行する準備が整いました。
参照:
次の処理
その他のTerraformチュートリアルを確認します:
Oracle製品を使用した開発の詳細を確認するには、次のサイトを参照してください: