既存リソースのインポート
既存のクラウドインフラを Terraform の State にインポートし、既存リソースを IaC 管理下に置く方法を学びます。
「既存リソースのインポート」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
既存のインフラをIaCに取り込む
クラウドリソースが手動または他のツールによって作成されている場合があります。Terraform importを使用すると、既存のリソースをTerraformの管理下に置くことができます。
これにより、Terraformがその状態を追跡できるようになり、以後の変更を設定ファイルを通じて適用できます。これは、「ブラウンフィールド」環境でInfrastructure as Code(IaC)を導入するための重要なステップです。
インポートが必要になる場合
インポートは、次のような状況で役立ちます。
- 既存インフラの移行: Terraform以外で作成されたリソースを、IaCのワークフローに取り込みます。
- Terraformの段階的な導入: すべてを再作成するのではなく、既存のリソースから始められます。
- 状態の消失からの復旧: 状態ファイルを失った場合に、Terraformとリソースの関連付けを再確立します(リモート状態を使用している場合、この事態はまれです)。
Importコマンドを使いこなす
terraform importコマンドの基本的な構文はシンプルです。このコマンドは、クラウドプロバイダーで既存のリソースを検索し、そのリソースを設定内のリソースブロックに関連付けて、状態ファイルに追加するようTerraformに指示します。
必要な情報は主に2つあります。リソースのTerraformのアドレスと、クラウドプロバイダーがそのリソースに付けたIDです。
リソースアドレスとは
リソースアドレスは、設定内で特定のリソースをTerraformが識別するためのものです。resource_type.resource_nameという形式に従います。
resource_type: リソースの種類(例:aws_s3_bucket、azurerm_resource_group)。resource_name: Terraformの設定でリソースに付けるローカル名(例:my_bucket、web_app)。
このアドレスは、.tfファイル内にあらかじめ存在している必要があります。
クラウドIDの確認
クラウドプロバイダー(AWS、Azure、GCPなど)の各リソースには、通常IDと呼ばれる一意の識別子があります。どの既存リソースをインポートするかをTerraformに伝えるため、このIDが必要です。
IDは、クラウドプロバイダーのコンソール、CLI、またはAPIで確認できます。たとえば、AWS S3バケットのIDはその名前であり、EC2インスタンスにはi-0abcdef1234567890のようなインスタンスIDがあります。
インポート前にHCLを定義する
重要なステップ: terraform importを実行する前に、Terraformの設定ファイル(.tfファイル)で対応するリソースブロックを定義しておく必要があります。
このブロックによって、Terraformに想定するリソースの種類と属性を伝えます。Terraformはこの定義を使用して、インポート時にリソースのスキーマを把握します。
S3バケットのHCL
my-existing-coddykit-bucket-123という名前の既存のAWS S3バケットがあるとします。まず、main.tfにそのリソースブロックを定義します。
resource "aws_s3_bucket" "my_imported_bucket" {
bucket = "my-existing-coddykit-bucket-123"
# Add other expected attributes if known
# e.g., acl = "private"
}S3バケットをインポートする
HCLの定義ができたら、terraform importコマンドを実行できます。my-existing-coddykit-bucket-123を、既存のバケットの実際の名前またはIDに置き換えてください。
あらかじめ作業ディレクトリでterraform initを実行しておいてください。
terraform import aws_s3_bucket.my_imported_bucket my-existing-coddykit-bucket-123Terraformの状態を確認する
インポートが成功すると、Terraformによってリソースが状態ファイルに追加されます。terraform state showを使用すると、Terraformから見たインポート済みリソースの属性を表示して確認できます。
その後、terraform planを実行し、HCLとインポートしたリソースの実際の状態との間に予期しない差異がないことを確認することが重要です。
terraform state show aws_s3_bucket.my_imported_bucketクイックチェック: インポートの順序
既存のAWS EC2インスタンスをTerraformにインポートするとします。terraform importコマンドを実行する前に必ず完了していなければならない手順は、次のうちどれですか。
まとめ: インフラをTerraformの管理下に置く
terraform importを使用して、既存のクラウドリソースをTerraformの管理下に置く方法を学びました。
- まず、HCLでリソースブロックを定義します。
- 次に、クラウドプロバイダーのリソースIDを確認します。
- 最後に、
terraform import ADDRESS IDを実行します。 - 必ず
terraform planを実行して、差異を調整してください。
この強力なコマンドにより、手動で管理されているインフラと、IaCを全面的に活用する環境との間の隔たりを埋めることができます。
よくある質問
「既存リソースのインポート」レッスンは無料ですか?
はい。「既存リソースのインポート」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「既存リソースのインポート」で何を学びますか?
既存のクラウドインフラを Terraform の State にインポートし、既存リソースを IaC 管理下に置く方法を学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「既存リソースのインポート」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。