2017-12-03 13 views
0

私はインフラストラクチャを構築するためにterraformを使用しましたが、何らかの理由でtfstateが削除されることがあります。これは、すでに私のリソースをtfファイルで定義していることを意味し、すべてを再インポートするだけです。tfファイルに定義されているすべてのリソースをインポートします。

これは手作業である必要がありますか?例えば

これは私がEC2インスタンスをインポートする方法です:

terraform import aws_instance.web i-123456 

私はすべてのリソースのthatsのために非常に痛いことをしなければならない場合は(だけでなく、すべてを削除して最初からやり直すかもしれません)。

すでにtfファイルがある場合は、定義されているすべてのリソースをインポートする方法がありますか?たとえば、そのインスタンスをインポートするためにインスタンスIDが必要でした。 terraformインポートコマンドが自分のtfファイルを読み込んで、 "aws_instance.web"にマッピングされたリソースを見つけることができますか?

これを行うには、terraformにtfファイル内のリソースにそのawsインスタンスをマッピングする必要があります。これはもちろんtfstateの目的です。しかし、テラフォームはリソースマッピングにリソースをタグ付けする方法もありますか?だから、私はtfファイルに対してインポートを行うことができ、terraformはtfファイルを動的に読み込み、固有のタグでtfリソースに対応する物理リソースを見つけます。

+0

2つの同一のリソースを定義した場合、どのように機能しますか? –

+0

どういう意味ですか?同じ名前のリソースを定義した2つの異なるtfファイルがあるとしますか?申し訳ありませんがまだ私の頭をテラフォームの周りに巻きつけるので、多分私はここで何かを見逃していますか? – red888

+0

そうですね。同じパラメータを使用して2つのEC2インスタンスを定義した場合、TerraformはインスタンスIDへのマッピングを保存せずにどのようなものを知っていますか? –

答えて

2

いいえ、これをネイティブにTerraformで行う方法はありません。一緒にスクリプトを作成しても、私はそれが非常に信頼できるとは思わないし、適切なリソースを選択したと信じることはできません(少なくとも簡単には)。

Terraformは、ドキュメント内で状態ファイルを保護する必要があることを複数回述べています。これは、S3などのリモートストアがあなたの気になるもののために奨励される理由です。そしてなぜこれがTerraform Enterpriseのセールスポイントであるのかということです。

+0

です。あなたのインフラストラクチャを十分に動的にするためにterraformを使用すると、完全に新しいバージョンを構築し、 – red888

+1

@ red888 TerraformはS3をデータストアとして使用し、バージョン管理を有効にすることを推奨しています。 –

関連する問題