本文へスキップ

Terraformとは?手動構築との違いを未経験向けにやさしく解説

#Terraform#IaC#AWS#初心者#未経験

求人票や勉強会で「Terraform使えます」という言葉を見かけて、名前は知っているけれど何をするツールなのか説明できない、という人は多いはずです。結論から言うと、Terraformとは、サーバーやネットワークなどのインフラをコードで書いて、その通りに自動で構築・変更してくれるツールのことです。この記事では、これまで画面をクリックして構築してきた「手動構築」と何が違うのか、未経験の立場からどう関わっていくことになるのかを、現場目線で順番に整理します。

コードエディタに書いた設定がクラウド上のサーバー群に変わるイメージ

Terraformとは何か

Terraformは、HashiCorp社が開発しているIaC(Infrastructure as Code、インフラのコード化)ツールです。AWSやAzureなどのクラウド上に作りたいサーバーやネットワークの構成を、設定ファイルとして文章で書いておくと、その内容を読み取ってクラウド側に実際の環境を作ってくれます。

対応しているサービスの範囲が広く、AWSだけでなくクラウド事業者をまたいで同じ書き方で扱えるのが特徴です。クラウドの基礎がまだ曖昧な場合は、先にクラウドとAWSの基礎知識を読んでおくと、Terraformが何を操作しているのかがイメージしやすくなります。

手動構築とTerraformで何が変わるか

これまでインフラの構築というと、管理画面にログインしてサーバーを1つずつ作る、ネットワークの設定を画面上でポチポチ変更する、というイメージを持っている人も多いと思います。Terraformを使うと、この作業がコードの実行に置き換わります。

項目手動構築(画面操作)Terraform
構築手順管理画面で毎回同じ操作を繰り返す設定ファイルに書いた内容を反映する
再現性手順書があっても人によって差が出やすい同じコードなら誰が実行しても同じ結果
変更履歴「誰が何を変えたか」が残りにくいコードの変更履歴としてGitで管理できる
環境の複製もう1セット作るのに同じ作業を再度行う同じコードを別環境に流すだけ

同じ構成をもう一度作れることと、変更の履歴が残ることが、手動構築に対するTerraformの一番の強みです。特に検証環境と本番環境のように似た構成を複数用意する場面では、この差が作業時間に直結します。

Terraformの基本的な仕組み

Terraformがどうやってコードから実際の環境を作っているのか、大きな流れをつかんでおくと理解が進みます。

設定ファイルの記述から計画・適用を経て環境ができるまでの流れ
  1. 記述: 作りたいサーバーやネットワークの構成を設定ファイル(.tfファイル)に書く
  2. 計画: terraform planで、今の状態と比べて何が新しく作られ、何が変更・削除されるかを事前に確認する
  3. 適用: terraform applyで、計画した内容を実際のクラウド環境に反映する

このうち特に重要なのが2番目の「計画」の工程です。いきなり環境に反映するのではなく、変更内容を事前に確認できる仕組みになっているため、意図しない削除や変更を実行前に気づきやすくなっています。この「まず計画を確認してから実行する」という進め方は、シェルスクリプトで自動化する作業にも通じる考え方なので、シェルスクリプト入門であわせて手を動かしておくと理解が深まります。

未経験がTerraformとどう関わるか

未経験から入って、いきなりTerraformの設定ファイルを一から書く役割を任されることは少なく、最初は既存のコードを読んで構成を把握したり、決まった手順でterraform planの結果を確認したりする場面から始まることが多いです。

現役でインフラの現場にいる立場から言うと、Terraformのコードは「今のインフラがどういう構成になっているか」を確認できる資料としても使われています。障害対応や構成変更の際に、まずコードを読んで現状を把握する、という動き方は未経験のうちから求められる基本の動作です。手動構築の経験がないまま入っても、Linuxの基礎やネットワークの基礎を理解していれば、コードが何を指しているかは読み解けるようになっていきます。

InfraDojoで学ぶ

InfraDojoなら、ブラウザ上の演習環境でLinuxやAWSの基礎を手を動かしながら学べるため、Terraformのコードが最終的に何を作っているのかを、コードに触れる前にイメージとして固めておけます。何から手をつければいいか迷う場合は、ロードマップで全体の流れを確認しておくと、Terraformを学ぶタイミングも判断しやすくなります。

よくある質問

Q. Terraformを学ぶ前に何を理解しておくべきですか?

クラウド(特にAWS)の基本的なサービスがどういうものかを理解していると、Terraformのコードで何を作ろうとしているのかがつかみやすくなります。加えて、コマンドラインの操作に慣れておくと、terraform planやterraform applyの実行に戸惑いにくくなります。

Q. TerraformとAnsibleは何が違いますか?

Terraformは主にサーバーやネットワークそのものを「作る・構成する」ことを得意とするツールで、Ansibleはできあがったサーバーの中にソフトウェアを入れたり設定を行ったりする「構築後の作業」を得意とするツールという位置づけで語られることが多いです。両方を組み合わせて使う現場もあるため、まずはそれぞれの役割の違いを押さえておくと理解が進みます。

Q. 未経験でもTerraformの学習は自宅でできますか?

クラウドの無料利用枠を使えば、自宅の環境からTerraformで小さな構成を作って壊す、という練習を繰り返せます。作った環境をterraform destroyで削除する操作まで一連の流れとして経験しておくと、コードと実際の環境がどうつながっているかの理解が深まります。

Reo|インフラエンジニアのアイコン

この記事を書いた人: InfraDojo運営者(Reo|インフラエンジニア)

現役インフラエンジニア。SESの現場経験に基づき、未経験からのインフラ転職と学習を支援しています。InfraDojoは、ブラウザ上のターミナルで実際に手を動かして学べるインフラ学習サイトです。

@Reo_engineer_

読むだけで終わらせず、今日から手を動かす

InfraDojoは、ブラウザを開くだけでLinux・ネットワーク・AWSの演習ができる学習サイトです。登録は30秒、最初のコースは無料です。