【ITニュース解説】【Terraform 1.14】terraform query コマンドで既存リソースを一括 import する
2025年09月22日に「Zenn」が公開したITニュース「【Terraform 1.14】terraform query コマンドで既存リソースを一括 import する」について初心者にもわかりやすく解説しています。
ITニュース概要
Terraform 1.14に新機能「terraform queryコマンド」が加わった。このコマンドにより、既存のクラウドインフラリソースをTerraformの管理下に一括で取り込めるようになり、初期設定や運用の効率化に役立つ。
ITニュース解説
システムエンジニアを目指す上で、インフラストラクチャを効率的に管理する技術は非常に重要である。その中でも「Infrastructure as Code (IaC)」という考え方は、現代のIT業界では欠かせないものとなっている。IaCとは、サーバーやネットワーク機器、データベースといったITインフラの構成情報を、まるでアプリケーションのソースコードのようにテキストファイルで記述し、バージョン管理や自動化を通じて管理する手法を指す。このIaCを実現するための代表的なツールの一つが「Terraform」である。
Terraformを使うと、例えばAmazon Web Services (AWS) やMicrosoft Azure、Google Cloud Platform (GCP) といったクラウドプロバイダ上に、仮想サーバーを何台、どのようなスペックで、どのネットワークに配置するか、といったインフラの構成をコードで記述できる。このコードを実行することで、記述通りのインフラが自動的に構築されるため、手作業で一つずつ設定するよりも、はるかに高速かつ正確にインフラを構築・変更できる。また、コードとして管理することで、インフラの変更履歴を追跡したり、複数人で協力して作業したりすることも容易になる。これにより、インフラの構築や運用の手間が大幅に削減され、システムの安定性や信頼性の向上にもつながる。
しかし、Terraformを導入する際には、一つの大きな課題があった。それは、Terraformを導入するよりも前に、既に手動で作成されてしまっている既存のインフラリソースを、Terraformの管理下に移行する作業である。例えば、長年運用されてきたシステムには、数え切れないほどのサーバーやデータベース、ネットワーク設定などが手動で構築されている場合が多い。これらの既存リソースをTerraformで管理するには、一つ一つのリソースについてTerraformの設定ファイル(通常は.tfという拡張子のファイル)にその構成を記述し、さらにterraform importというコマンドを使って、既存リソースとTerraformの状態ファイル(tfstateファイル)を紐付ける作業が必要だった。
このterraform importコマンドは、これまでは基本的にリソースを一つずつしか扱えなかったため、何百、何千という既存リソースがある大規模なシステムの場合、その移行作業は非常に時間と手間がかかる、骨の折れる作業となっていた。多くのエンジニアがこの手作業によるimport作業に苦しめられ、Terraformの導入をためらう要因の一つにもなっていたのが実情である。
このような課題を解決するために、Terraformの新しいバージョンである「Terraform 1.14」で注目すべき新機能が導入される予定だ。その中心となるのが、「List Resources」という概念と、それを活用する「terraform query」コマンドである。
「List Resources」とは、特定の条件に合致する既存のインフラリソースのリストを自動的に取得し、定義できる機能である。これは、*.tfquery.hclという新しい形式のファイルに記述され、既存のインフラの中から「このタグが付いているサーバー全て」や「このリージョンにあるVPC全て」といった形で、必要なリソース群を指定できるようになる。これにより、手動で一つ一つのリソースIDを調べてリストアップする手間が不要になる。
そして、「terraform query」コマンドは、この*.tfquery.hclファイルに定義された「List Resources」を利用して、実際に既存のインフラから情報を問い合わせ、フィルタリングを行うための強力なツールとなる。例えば、開発環境として使われているAWSのEC2インスタンスだけをリストアップしたり、本番環境で稼働しているRDSデータベースの情報を抽出したりすることが、このコマンド一つで可能になる。これにより、複雑なスクリプトを書かなくても、コマンドラインから簡単に既存インフラの情報を引き出せるようになるのだ。
これらの新機能が真価を発揮するのが、まさに既存リソースの一括importのシナリオである。terraform queryコマンドを使うことで、手動でリストアップすることが困難だった大量の既存リソースを、自動的かつ効率的に特定できるようになる。例えば、あるプロジェクトに関連する全てのEC2インスタンスやS3バケットといった複数の種類のリソースを、一度の問い合わせでまとめて抽出できる。
抽出されたリソースの情報は、Terraformの設定ファイルを自動生成したり、Terraformのimportコマンドに渡すための情報として利用したりすることが可能になる。これにより、これまで一つずつ手動で行っていた「リソースの特定」「設定ファイルの記述」「importコマンドの実行」という一連の作業を、大幅に自動化・効率化できる道が開かれる。
システムエンジニアにとって、この一括import機能は計り知れないメリットをもたらす。まず、既存のレガシーシステムをIaC化する際の障壁が大きく下がる。大規模なシステム全体をTerraformの管理下に置くことが、以前よりもはるかに現実的な選択肢となるだろう。これにより、システムの構成がコードとして明確になり、変更管理が容易になるだけでなく、災害復旧時などの復旧作業も迅速かつ確実に行えるようになる。
また、新しいプロジェクトを開始する際にも、一部手動で作成されたリソースが混在してしまうような状況を避けやすくなる。インフラの管理が一貫した手法で行われることで、チーム全体の生産性が向上し、ヒューマンエラーによるトラブルも減少すると期待される。
Terraform 1.14で導入される「List Resources」と「terraform query」コマンドは、既存のインフラ管理の課題を根本から解決し、より多くの組織がIaCの恩恵を受けられるようになるための重要な一歩と言えるだろう。システムエンジニアを目指す皆さんにとって、このような新しい技術動向を理解し、実際に活用できる能力は、これからのキャリアを築く上で大きな強みとなるに違いない。この進化は、インフラ管理の未来をよりスマートで効率的なものへと変えていく可能性を秘めている。