リソース検出によるスクリプトおよび状態ファイルの作成
コンパートメント内の既存のリソースのTerraformファイルを生成します。
OCIリソース検出機能を使用して、次のことを行います。
- コンソールで既存のリソースの状態ファイルを作成し、それらのリソースをTerraform設定に追加します。
- 既存のインフラストラクチャを新しいテナントまたはリージョンで複製します。
- 更新されたリソースの状態ドリフトを検出します。
このチュートリアルでは、リソース検出機能を使用して、アカウント内のリソースのスクリプトおよび状態ファイルを作成します。次に、Terraformを使用してリソースを管理します。
主なタスクは:
- コンソールを使用してリソースを作成します。
- リソース検出機能を使用して、リソースのスクリプトおよび状態ファイルを作成します。
- Terraformでリソースを更新します。
- コンソールでリソースが更新されたことを確認します。
詳細は、次を参照してください:
開始前
このチュートリアルを正常に実行するには、次が必要です:
- Oracle Cloud Infrastructureアカウント。無料Oracle Cloudプロモーションのリクエストおよび管理を参照してください。
- MacOS、LinuxまたはWindowsコンピュータ。
- Terraformチュートリアル・リソース:
- リソース検出の設定のすべてのステップに従います。
- OCI Terraformプロバイダ・コマンドをノートにとります:
-
クラウド・シェル:
/usr/binのterraform-provider-oci_<version> - コンピュート・インスタンスまたはローカル環境: 前のチュートリアルで作成した
<shorter-alias>を使用して、コマンドterraform-provider-oci_<version>のかわりに使用します。- 例:
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製品を使用した開発の詳細を確認するには、次のサイトを参照してください: