このトピックでは、Terraform およびその関連ツールを使用して既存のクラウドリソースを管理する方法について説明します。
背景
Terraform は、クラウドリソース管理を自動化するための主要な Infrastructure as Code (IaC) ツールです。新しいリソースの場合、Terraform コードを記述してコマンドを実行することで自動的に作成できます。既存のリソースや Terraform によって作成されていないリソースの場合は、インポートする必要があります。このプロセスにより、リソースコードと状態ファイルが生成されます。その後、Terraform を使用してこれらのリソースを管理できます。
リソースのインポート機能により、既存のクラウドリソースを Terraform の管理下に置くことができます。
シナリオ
リソースのインポートは、いくつかのリソース管理およびデプロイメントシナリオで役立ちます。
既存リソースの管理: コンソール、API、コマンドラインインターフェイス (CLI) などの他のツールで管理されているリソースを Terraform 管理に移行します。
リソースドリフトの解決: Terraform で管理されているリソースが Terraform の外部で変更されると、その状態は構成と一致しなくなります。これはリソースドリフトと呼ばれます。リソースを再インポートして、このドリフトを解決できます。
コードのリファクタリング: すべてのリソースが単一の構成ファイルで定義されている場合、ファイルをリファクタリングして分割できます。これにより、リソースの数が増えるにつれて、構成ファイルと状態ファイルの管理の複雑さが軽減されます。
リソースの迅速なデプロイ: 既存のリソースアーキテクチャを別のリージョンまたはアカウントに複製してデプロイします。
リソースの迅速な回復: リソースアーキテクチャを定期的にバックアップします。安定性の問題が発生した場合、バックアップコードを使用してアーキテクチャを迅速に回復できます。
手順
このトピックでは、リソースをインポートする 3 つの方法について説明します。
import コマンド: ネイティブの Terraform コマンド
terraform importを使用して単一のリソースをインポートします。import ブロック: Terraform の import ブロックを記述し、
terraform planとterraform applyを実行して 1 つ以上のリソースをインポートします。Terraformer ツール: オープンソースの Terraformer ツールでコマンドを実行してリソースをフィルターおよびクエリし、バッチでインポートします。
これら 3 つの方法は、さまざまなシナリオに適しています。ニーズに最も適した方法を選択してください。
インポート方法 | 利点 | 欠点 | シナリオ |
import コマンド |
|
| 既存リソースの管理 リソースドリフトの解決 コードのリファクタリング |
import ブロック |
|
| 既存リソースの管理 リソースドリフトの解決 コードのリファクタリング リソースの迅速なデプロイ |
Terraformer |
|
| 既存リソースの管理 リソースドリフトの解決 コードのリファクタリング リソースの迅速なデプロイ リソースの迅速な回復 |
Terraform import コマンド
<a class="ne-link" data-href="https://developer.hashicorp.com/terraform/cli/commands/import" href="https://developer.hashicorp.com/terraform/cli/commands/import" id="653ac62fdfgjr" target="_blank">terraform import</a> コマンドは、リソースアドレスとリソース ID を指定してリソースをインポートし、いくつかの構成パラメーターを受け入れます。
前提条件
Terraform ランタイム環境を準備します。次のいずれかの方法を選択できます。
Cloud Shell: Alibaba Cloud Cloud Shell には Terraform コンポーネントがプリインストール済みで、ID 資格情報が構成されています。Cloud Shell で Terraform コマンドを直接実行できます。この方法は、Terraform にすばやく簡単にアクセスするのに適しています。
Terraform をローカルにインストールして構成する: この方法は、ネットワーク接続が悪いシナリオや、カスタム開発者環境が必要な場合に適しています。
アクティブなアカウントに関連リソースの読み取り専用権限を付与します。
使用方法
コマンドのフォーマットは terraform import [options] <address> <id> です。
リソースアドレス: フォーマットは
<resource_type>.<resource_name>です。リソースタイプと名前が含まれ、状態ファイル内のインフラストラクチャの識別子として機能します。たとえば、次の構成スニペットの VPC のリソースアドレスは
alicloud_vpc.defaultです。
resource "alicloud_vpc" "default" { vpc_name = "tf-example" cidr_block = "10.0.0.0/8" }リソース ID: リソース ID は、リソースを一意に識別し、サーバーから情報をリクエストするために使用される入力パラメーターです。リソース ID のフォーマットの詳細については、各リソースの「プロバイダーのドキュメント」をご参照ください。
たとえば、
alicloud_security_groupのリソース ID はセキュリティグループ ID です。alicloud_security_group_ruleのリソース ID は特定のフォーマットに従います。

構成オプション: Terraform import コマンドはさまざまなオプションを受け入れます。詳細については、「公式の使用方法の説明」をご参照ください。
例
次の例は、Object Storage Service (OSS) インスタンスをインポートする方法を示しています。
作業ディレクトリを作成します。ディレクトリに main.tf という名前の構成ファイルを作成し、インポートするリソースのアドレスを定義します。
resource "alicloud_oss_bucket" "default"{ }alicloud_oss_bucket リソースの ID はバケット名です。
ランタイム環境を初期化します。
terraform initimport コマンドを実行できます。
# バケット名に置き換えてください terraform import alicloud_oss_bucket.default oss-bucket-import次の出力は、インポートが成功したことを示します。
alicloud_oss_bucket.default: Importing from ID "oss-bucket-import"... alicloud_oss_bucket.default: Import prepared! Prepared alicloud_oss_bucket for import alicloud_oss_bucket.default: Refreshing state... [id=oss-bucket-import] Import successful! The resources that were imported are shown above. These resources are now in your Terraform state and will henceforth be managed by Terraform.terraform import を実行した後、プロパティはテンプレートに自動的に追加されません。手動で追加する必要があります。
terraform showを実行して、現在のリソースのすべてのプロパティを表示できます。# alicloud_oss_bucket.default: resource "alicloud_oss_bucket" "default" { acl = "private" bucket = "oss-bucket-import" creation_date = "2024-11-22" extranet_endpoint = "oss-cn-beijing.aliyuncs.com" id = "oss-bucket-import" intranet_endpoint = "oss-cn-beijing-internal.aliyuncs.com" location = "oss-cn-beijing" owner = "1511928*****" redundancy_type = "ZRS" resource_group_id = "rg-acf***" storage_class = "Standard" tags = {} access_monitor { status = "Disabled" } }前の情報をテンプレートに追加し、 alicloud_oss_bucket で説明されているように読み取り専用プロパティを削除した後、Terraform を使用してリソースを管理できます。
Terraform import ブロック
Terraform v1.5.0 以降では、`import` ブロックを使用したリソースのインポートがサポートされています。構成ファイルに `import` ブロックを記述して、インポートするリソースの ID とアドレスを指定できます。その後、terraform plan および terraform apply コマンドを実行して、インポートをプレビューおよび実行できます。
詳細については、「公式ドキュメント」をご参照ください。
前提条件
Terraform ランタイム環境を準備します。次のいずれかの方法を選択できます。
説明この機能には Terraform v1.5.0 以降が必要です。お使いの環境が互換性のあるバージョンを使用していることを確認してください。
Cloud Shell: Alibaba Cloud Cloud Shell には Terraform コンポーネントがプリインストール済みで、ID 資格情報が構成されています。Cloud Shell で Terraform コマンドを直接実行できます。この方法は、Terraform にすばやく簡単にアクセスするのに適しています。
Terraform をローカルにインストールして構成する: この方法は、ネットワーク接続が悪いシナリオや、カスタム開発者環境が必要な場合に適しています。
アクティブなアカウントに関連リソースの読み取り専用権限を付与します。
使用方法
構文は次のとおりです。
import {
to = alicloud_oss_bucket.example
id = "oss-bucket-import"
}
# Optional
# resource "alicloud_oss_bucket" "example" {
# # (other resource arguments...)
# }import コマンドと比較して、import ブロックには 2 つの利点があります。
構成ファイルを自動的に生成します。構成で既に定義されているリソースアドレスにリソースをインポートできます。また、
-generate-config-outパラメーターを使用して構成を自動的に生成することもできます。これにより、構成を手動で記述する手間が省けます。バッチインポート。`import` ブロックでは、
for_eachを使用してリソースをバッチでインポートできます。リソースに類似の属性がある場合、同じリソースアドレスにインポートし、インデックスで区別できます。
これら 2 つの機能を同時に使用することはできません。Terraform CLI は現在、for_each を使用するリソースの構成の自動生成をサポートしていません。
例
次の例は、import ブロックを使用して OSS インスタンスをインポートする方法を示しています。
作業ディレクトリを作成します。ディレクトリに main.tf という名前の構成ファイルを作成します。import ブロックを記述して、インポートするリソースの ID とアドレスを指定します。
import { to = alicloud_oss_bucket.default id = "oss-bucket-import" }ランタイム環境を初期化します。
terraform initterraform planコマンドを実行して、インポートするリソーステンプレートをプレビューします。-generate-config-outパラメーターを使用してテンプレートを自動的に生成します。terraform plan -generate-config-out=generated.tf次の情報が表示されます。
alicloud_oss_bucket.default: Preparing import... [id=oss-bucket-import] alicloud_oss_bucket.default: Refreshing state... [id=oss-bucket-import] Terraform will perform the following actions: # alicloud_oss_bucket.default will be imported # (config will be generated) resource "alicloud_oss_bucket" "default" { acl = "private" bucket = "oss-bucket-import" creation_date = "2024-11-22" extranet_endpoint = "oss-cn-beijing.aliyuncs.com" id = "oss-bucket-import" intranet_endpoint = "oss-cn-beijing-internal.aliyuncs.com" location = "oss-cn-beijing" owner = "15119****" redundancy_type = "ZRS" resource_group_id = "rg-acfmzaq*****" storage_class = "Standard" tags = {} access_monitor { status = "Disabled" } } Plan: 1 to import, 0 to add, 0 to change, 0 to destroy. ╷ │ Warning: Config generation is experimental │ │ Generating configuration during import is currently experimental, and the generated configuration │ format may change in future versions. ╵ ───────────────────────────────────────────────────────────────────────────────────────────────────── Terraform has generated configuration and written it to generated.tf. Please review the configuration and edit it as necessary before adding it to version control. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.プランを確認した後、
terraform applyコマンドを実行してインポートを実行します。terraform applyプロンプトが表示されたら yes と入力します。次の出力は、インポートが成功したことを示します。
...... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes alicloud_oss_bucket.default: Importing... [id=oss-bucket-import] alicloud_oss_bucket.default: Import complete [id=oss-bucket-import] Apply complete! Resources: 1 imported, 0 added, 0 changed, 0 destroyed.
Terraformer ツール
ネイティブの Terraform 機能に加えて、オープンソースツール Terraformer を使用して、アカウントから Terraform テンプレートにリソースを迅速にバッチインポートできます。オープンソースの Terraformer は、各クラウドプロバイダーのリソースのサブセットのみをサポートします。プロバイダーは、特定のリソースのサポートを追加するためにカスタム開発を実行する必要があります。
Terraformer ツールは 2 つの方法で使用できます。
オープンソース Terraformer: 複数のクラウドプロバイダーからのリソースインポートをサポートする Terraformer のオリジナルバージョン。
Alibaba Cloud Terraformer: Alibaba Cloud からのリソースインポートのみをサポートする Terraformer の拡張バージョン。
特徴 | オープンソース Terraformer | Alibaba Cloud Terraformer |
インポートでサポートされているプロダクトのリストを表示 | ❌ | ✅ |
インポートでサポートされているリソースタイプのリストを表示 | ❌ | ✅ |
リージョンによるフィルター | ✅ | ✅ |
指定されたリージョンを除外してフィルター | ❌ | ❌ |
ゾーンによるフィルター | ❌ | ✅ |
指定されたゾーンを除外してフィルター | ❌ | ❌ |
プロダクトによるフィルター | ❌ | ✅ |
指定されたプロダクトを除外してフィルター | ❌ | ✅ |
リソースタイプによるフィルター | ✅ | ✅ |
指定されたリソースタイプを除外してフィルター | ✅ | ✅ |
リソース ID のリストによるフィルター | ✅ | ✅ |
指定されたリソース ID のリストを除外してフィルター | ❌ | ❌ |
リソース名によるフィルター | ✅ | ✅ |
リソースグループによるフィルター | ✅ | ✅ |
タグによるフィルター | ✅ | ✅ |
リソースの依存関係を自動的に作成 | ❌ | ✅ |
変数を自動的に生成 | ❌ | ✅ |
出力を自動的に生成 | ❌ | ❌ |
オープンソース Terraformer
前提条件
Terraformer のダウンロードとインストール
オープンソースの Terraformer デプロイメントパッケージは、すべてのプロバイダー向けの包括的なパッケージとして、または各プロバイダー向けの個別のパッケージとして利用できます。必要なパッケージをダウンロードしてください。次の例は、Linux および macOS でパッケージをダウンロードする方法を示しています。詳細については、「インストール」をご参照ください。
Linux ユーザー
export PROVIDER=all curl -LO "https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl -s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-${PROVIDER}-linux-amd64" chmod +x terraformer-${PROVIDER}-linux-amd64 sudo mv terraformer-${PROVIDER}-linux-amd64 /usr/local/bin/terraformermacOS ユーザー
export PROVIDER=all curl -LO "https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl -s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-${PROVIDER}-darwin-amd64" chmod +x terraformer-${PROVIDER}-darwin-amd64 sudo mv terraformer-${PROVIDER}-darwin-amd64 /usr/local/bin/terraformer依存関係
現在のアカウントに関連リソースの読み取り専用権限を付与します。
Terraform のインストール
説明Cloud Shell でコマンドを実行する場合、このステップはスキップできます。
詳細については、「Terraform をローカルにインストールして構成する」をご参照ください。
関連するプロバイダーをダウンロードします。プロバイダーは、次の 2 つの方法のいずれかで構成できます。
Terraformer コマンドを実行するディレクトリでプロバイダーを初期化します。
プロバイダーを ~/.terraform.d/plugins/ パスにダウンロードします。
アクセス資格情報を構成します。Terraformer は現在、ローカルプロファイルの読み取りによる認証のみをサポートしています。デフォルトでは、プロファイルの最初の資格情報がインポートに使用されます。Alibaba Cloud のアクセス資格情報を構成する方法の詳細については、「資格情報を構成する」をご参照ください。
使用方法
次の例では、terraformer-all-darwin-amd64 v0.8.24 を使用します。
Terraformer は、help、import、plan、and version の 4 つのコマンドをサポートしています。
help: コマンドの詳細を表示します。

version: 現在のバージョン番号を表示します。

import: 指定されたプロバイダーのリソースをインポートします。

plan: 指定されたプロバイダーに対してインポートされるリソースをプレビューします。
例
次の例は、中国 (杭州) リージョン内のすべての Alibaba Cloud VPC をインポートする方法を示しています。
インポートされたテンプレートと状態ファイルを保存するディレクトリを作成します。
mkdir example && cd example次のコマンドを実行します。
terraformer-all-darwin-arm64 import alicloud --resources=vpc --regions=cn-hangzhou --path-pattern={output} --path-output=./--resources: インポートするリソースのコレクションを指定します。--regions: リソースが配置されているリージョンを指定します。--path-pattern: 生成されるディレクトリ構造のパターンを指定します。--path-output: 生成されるファイルの出力パスを指定します。
生成されたテンプレートファイルは次のとおりです。デフォルトでは、リージョン情報がディレクトリパスに追加されます。すべてのリソーステンプレートを単一のファイルに圧縮するには、
--compactパラメーターを指定します。このパラメーターは、すべてのリソースをresources.tfファイルに出力します。└── cn-hangzhou ├── outputs.tf ├── provider.tf ├── terraform.tfstate ├── variables.tf ├── vpc.tf └── vswitch.tf 2 directories, 6 filesローカルの Terraform バージョンが
>=0.13.0の場合、新しい Terraform バージョンとの互換性のために状態ファイルを変更するには、次のコマンドを実行する必要があります。terraform state replace-provider -auto-approve "registry.terraform.io/-/alicloud" "aliyun/alicloud"
Alibaba Cloud Terraformer - aliterraformer (推奨)
aliterraformer はオープンソースの Terraformer に基づいており、より多くのリソースのサポートを追加します。また、アクセス資格情報の構成とインポートディメンション機能も強化されています。
前提条件
ダウンロードとインストール
aliterraformer は Alibaba Cloud Object Storage Service (OSS) に保存されています。次の場所からダウンロードできます。
macOS
# amd64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_darwin_amd64.zip # arm64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_darwin_arm64.zipLinux
# amd64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_linux_amd64.zip # arm wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_linux_arm.zip # arm64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_linux_arm64.zipWindows
# amd64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_windows_amd64.zip # 386 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_windows_386.zipたとえば、macOS では、ダウンロード後にファイルを解凍します。
unzip aliterraformer_darwin_amd64.zip chmod +x aliterraformer sudo mv aliterraformer /usr/local/bin/aliterraformer依存関係
オープンソースの Terraformer と同様に、terraform および terraform-provider-alicloud ファイルを準備し、アクセスの制御を構成する必要があります。
Resource Access Management (RAM) アカウントに関連リソースの読み取り専用権限を付与します。
Terraform のインストール
詳細については、「Terraform をローカルにインストールして構成する」をご参照ください。Cloud Shell でコマンドを実行する場合、このステップはスキップできます。
terraform-provider-alicloud のダウンロード
インポート用のプロバイダーバージョンを設定できます。init コマンドによって作成されるキャッシュディレクトリの構造は、v0.13.0 より前のバージョンと v0.13.0 以降のバージョンで異なります。次の例は、v0.13.0 以降のバージョンのディレクトリを読み取る方法を示しています。
# 1. TF_DATA_TFER_DIR 環境変数を使用して設定 <$TF_DATA_TFER_DIR>/providers/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 # 2. 現在の作業ディレクトリの隠しディレクトリに設定 .terraform/providers/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 # 3. ユーザーのルートディレクトリの隠しディレクトリに設定 <HOME>/.terraform.d/plugins/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0アクセス資格情報の構成
プロファイル を使用するだけでなく、環境変数とコマンドパラメーターを使用して aliterraformer でアクセス資格情報を設定できます。
# 1. ALICLOUD_ACCESS_KEY および ALICLOUD_SECRET_KEY 環境変数を使用 $ export ALICLOUD_ACCESS_KEY=xxxx $ export ALICLOUD_SECRET_KEY=xxxxx # 2. --access-key および --secret-key コマンドパラメーターを渡す $ aliterraformer import alicloud --access-key=xxxx --secret-key=xxx ... # 3. プロファイルメカニズムを介して AK を設定および渡す $ aliterraformer import alicloud --profile=default ...
使用方法
aliterraformer は help、version、products、resources、import の 5 つのコマンドをサポートしています。元のオープンソース Terraformer に products、resources コマンドを追加します。
help: サポートされているコマンドの詳細を表示します。
aliterraformer help
version: 現在の Terraformer バージョンを表示します。
aliterraformer versionproducts: 現在のバージョンがインポートをサポートしているプロダクトのリストを表示します。
aliterraformer products
resources: 現在のバージョンがインポートをサポートしているプロダクトのリソースのリストを表示します。
-pを使用してプロダクトを指定します。aliterraformer resources -p <productName>

import: インポート操作を実行します。Alibaba Cloud リソースをインポートする場合は、alicloud を指定する必要があります。次のコマンドを実行して、Alibaba Cloud リソースのインポートでサポートされているパラメーターを表示します。
aliterraformer import alicloud -h
インポートを実行するときは、まずインポートするリソースのコレクションを定義する必要があります。次に、これらのリソースをフィルターし、特定のプロパティをパラメーターとして抽出できます。
リソースコレクションの構築:
import コマンドには、インポートするリソースの範囲を定義するための 4 つのフラグがあります: <--products>、<--resources>、<--excludes-products>、および <--excludes>。これらのフラグを組み合わせてリソースコレクションを構築できます。次の例は、これらのフラグの使用方法を示しています。
特定のリソースのインポート
# VPC、vSwitch、および ECS インスタンスをインポート aliterraformer import alicloud -r=vpc,vswitch,instance特定のプロダクトのインポート
# ACK および ALB プロダクト配下のすべてのリソースをインポート aliterraformer import alicloud --products=ACK,ALB特定のプロダクトとリソースのインポート
# ACK および ECS プロダクト配下のすべてのリソース、およびすべての VPC と vSwitch をインポート aliterraformer import alicloud --products=ACK,ECS -r=vpc,vswitch特定のプロダクトをインポートするが、それらのプロダクト内の一部のリソースは除外する
# alicloud_cs_kubernetes を除く ACK 配下のすべてのリソースをインポート aliterraformer import alicloud --products=ACK --excludes=cs_kubernetesすべてのプロダクトからすべてのリソースをインポート
# products に ALL を入力すると、すべてのプロダクトを意味します aliterraformer import alicloud --products=ALLすべてのプロダクトからすべてのリソースをインポートするが、特定のプロダクトは除外する
# VPNGateway と WAF を除くすべてのプロダクトをインポート aliterraformer import alicloud --products=ALL --excludes-products=VPNGateway,WAFすべてのプロダクトからすべてのリソースをインポートするが、特定のプロダクトとリソースは除外する
# VPNGateway と WAF を除くすべてのプロダクトをインポートし、alicloud_cs_kubernetes リソースを除外する aliterraformer import alicloud --products=ALL --excludes-products=VPNGateway,WAF --excludes=cs_kubernetes
リソースのフィルター
このパラメーターのフォーマットは
--filter=Type1.AttrKey=AttrValue1;AttrValue2,Type2.AttrKey=AttrValue1;AttrValue2です。Type を省略した場合、フィルター条件はすべてのリソースに適用されます。ID vpc-123 の VPC をインポート
# 複数の値を指定するには、セミコロンで区切ります: --filter="vpc.id=vpc-123;vpc-456" aliterraformer import alicloud -r=vpc --filter="vpc.id=vpc-123"両方とも tf-example という名前の VPC と vSwitch をインポート
aliterraformer import alicloud -r=vpc,vswitch --filter="vpc.vpc_name=tf-example,vswitch.vswitch_name=tf-example"両方ともリソースグループ rg-12345 に属する VPC と ECS インスタンスをインポート
aliterraformer import alicloud -r=vpc,instance --filter="resource_group_id=rg-12345"
output-variables を使用してプロパティを変数として抽出
このパラメーターのフォーマットは
r1:attr1,attr2;r2:attr1,attr2,attr3です。ECS インスタンスから vpc_id と vswitch_id を変数として抽出
aliterraformer import alicloud -r=instance --output-variables="instance:vpc_id,vswitch_id"
例
次の例では、中国 (杭州) リージョンで VPC ID が vpc-12345 の VPC、vSwitch、および ECS インスタンスをインポートし、vSwitch の zone_id を変数として抽出する方法を示します。
インポートされたテンプレートと状態ファイルを保存するディレクトリを作成します。
mkdir example && cd exampleimport コマンドを構築します。
aliterraformer import alicloud \ --regions=cn-hangzhou \ -r=vpc,vswitch,instance \ --filter="vpc.id=vpc-12345,vswitch.vpc_id=vpc-12345,instance.vpc_id=vpc-12345" \ --output-variables="vswitch:zone_id" \ --path-output=example \ --path-pattern={output} \ --compact--path-output: インポートフォルダを指定します。--path-pattern: インポートされたリソーステンプレートのディレクトリ構造フォーマットを指定します。デフォルトのフォーマットは{output}/{provider}/{service}/です。他の利用可能なフォーマットには{output}/{provider}/と{output}/があります。たとえば、--path-pattern={output}を指定すると、すべてのテンプレートが単一のフォルダに配置されます。--compact: このパラメーターが指定されていない場合、リソースは別々の{service}.tfファイルに保存されます。このパラメーターが指定されている場合、すべてのリソースはresources.tfファイルに保存されます。
インポート後、example ディレクトリに次のファイルが生成されます。
. ├── outputs.tf ├── provider.tf ├── resources.tf ├── terraform.tfstate └── variables.tf--path-pattern={output}を指定しない場合、ディレクトリ構造は次のようになります。. └── alicloud ├── instance │ ├── provider.tf │ ├── terraform.tfstate │ └── variables.tf ├── vpc │ ├── outputs.tf │ ├── provider.tf │ ├── terraform.tfstate │ ├── variables.tf │ └── vpc.tf └── vswitch ├── outputs.tf ├── provider.tf ├── terraform.tfstate ├── variables.tf └── vswitch.tfローカルの Terraform バージョンが
>=0.13.0の場合、新しい Terraform バージョンと互換性を持たせるために状態ファイルを変更するには、次のコマンドを実行する必要があります。terraform state replace-provider -auto-approve "registry.terraform.io/-/alicloud" "aliyun/alicloud"
フィードバックと提案
このチュートリアルに関するご質問やご提案がございましたら、DingTalk グループ (グループ ID: 34240022836) で当社のエンジニアとコミュニケーションをとることができます。また、Alibaba Cloud Terraform Provider GitHub ページで issue を送信することもできます。いただいたフィードバックに対応いたします。