コマンド: import
tofu import
コマンドは、既存のリソースをOpenTofuにインポートします。
使用法
使用法: tofu import [オプション] アドレス ID
importコマンドは、IDから既存のリソースを見つけ、指定されたアドレスでOpenTofuステートにインポートします。
アドレスは有効なリソースアドレスである必要があります。任意のリソースアドレスが有効であるため、importコマンドは、リソースをモジュールだけでなく、ステートのルートにも直接インポートできます。
IDは、インポートされるリソースタイプによって異なります。たとえば、AWS EC2インスタンスの場合、インスタンスID(i-abcd1234
)ですが、AWS Route53ゾーンの場合、ゾーンID(Z12ABC4UGMOZ2N
)です。ID形式の詳細については、プロバイダードキュメントを参照してください。不明な場合は、IDを試してみてください。IDが無効な場合は、エラーメッセージが表示されます。
OpenTofuは、管理対象のリモートオブジェクトが、通常はOpenTofu自体がすべてのオブジェクトを作成することで保証される、1つのリソースアドレスのみにバインドされることを想定しています。既存のオブジェクトをOpenTofuにインポートする場合は、各リモートオブジェクトを1つのOpenTofuリソースアドレスのみにインポートするように注意してください。同じオブジェクトを複数回インポートすると、OpenTofuが望ましくない動作をする可能性があります。この前提の詳細については、ステートのセクションを参照してください。
モジュールソース、バックエンド構成、または暗号化ブロックでの変数の使用には、tofu import
の実行時にルートモジュール変数に値を割り当てる必要があります。
コマンドラインフラグはすべてオプションです。次のフラグを使用できます。
-
-config=path
- インポート用にプロバイダーを構成するOpenTofu構成ファイルのディレクトリへのパス。デフォルトでは、作業ディレクトリになります。このディレクトリにOpenTofu構成ファイルが含まれていない場合、プロバイダーは手動入力または環境変数で構成する必要があります。 -
-input=true
- プロバイダー構成の入力を求めるかどうか。 -
-lock=false
- 操作中にステートロックを保持しません。他の人が同じワークスペースに対して同時にコマンドを実行している場合は危険です。 -
-lock-timeout=0s
- ステートロックをリトライする時間。 -
-no-color
- 指定すると、出力に色が含まれません。 -
-parallelism=n
- OpenTofuがグラフを歩く際の同時操作数を制限します。デフォルトは10です。 -
-provider=provider
- **非推奨** オブジェクトのインポート時に使用するプロバイダー構成をオーバーライドします。デフォルトでは、OpenTofuはターゲットリソースの構成で指定されたプロバイダーを使用し、ほとんどの場合、これが最適な動作です。 -
-var 'foo=bar'
- OpenTofu構成に変数を設定します。このフラグは複数回設定できます。変数値は、OpenTofu言語のリテラル式として解釈されるため、リスト値とマップ値はこのフラグで指定できます。 -
-var-file=foo
- 変数ファイルからOpenTofu構成に変数を設定します。terraform.tfvars
または.auto.tfvars
ファイルが現在のディレクトリにある場合、それらは自動的にロードされます。terraform.tfvars
が最初にロードされ、.auto.tfvars
ファイルがアルファベット順にロードされます。-var-file
で指定されたファイルは、作業ディレクトリ内のファイルから自動的に設定された値を上書きします。このフラグは複数回使用できます。これは、-config
フラグでのみ役立ちます。
cloud
バックエンドまたはremote
バックエンドのみを使用する構成の場合、tofu import
は-ignore-remote-version
オプションも受け入れます。
local
バックエンドのみを使用する構成の場合、tofu import
はレガシーオプションである -state
、-state-out
、および -backup
も受け付けます。
プロバイダーの設定
OpenTofuは、インポートに使用されるプロバイダーを設定する設定ファイルを読み込もうとします。設定ファイルが存在しない場合、または特定のプロバイダーの設定が存在しない場合、OpenTofuはアクセス認証情報を求めます。プロバイダーを設定するために環境変数を指定することもできます。
設定ファイルの読み込みに関してOpenTofuが持つ唯一の制限は、インポートプロバイダーの設定が変数以外の入力に依存してはならないということです。たとえば、プロバイダーの設定はデータソースに依存できません。
実際の例として、AWSリソースをインポートしていて、以下の内容の設定ファイルがある場合、OpenTofuはこのファイルでAWSプロバイダーを設定します。
variable "access_key" {}
variable "secret_key" {}
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}
例:リソースへのインポート
この例では、foo
という名前の aws_instance
リソースにAWSインスタンスをインポートします。
$ tofu import aws_instance.foo i-abcd1234
例:モジュールへのインポート
以下の例では、foo
という名前のモジュール内の bar
という名前の aws_instance
リソースにAWSインスタンスをインポートします。
$ tofu import module.foo.aws_instance.bar i-abcd1234
例:countで設定されたリソースへのインポート
以下の例では、count
で設定された baz
という名前の aws_instance
リソースの最初のインスタンスにAWSインスタンスをインポートします。
$ tofu import 'aws_instance.baz[0]' i-abcd1234
例:for_eachで設定されたリソースへのインポート
以下の例では、for_each
で設定された baz
という名前の aws_instance
リソースの "example"
インスタンスにAWSインスタンスをインポートします。
Linux、Mac OS、および UNIX
$ tofu import 'aws_instance.baz["example"]' i-abcd1234
PowerShell
$ tofu import 'aws_instance.baz[\"example\"]' i-abcd1234
Windows cmd.exe
$ tofu import aws_instance.baz[\"example\"] i-abcd1234