【Terraform予備知識】駆け出しエンジニアのための、Terraformとは?

Terraform...ちょっと勉強している人は名前を聞いたことくらいはあるかもしれません。結論から言うと、「インフラをコード化できる」っていう画期的なやつです。

2024年01月03日
関連記事

はじめに

Terraformって聞いたことありますか?
ちょっと勉強している人は名前を聞いたことくらいはあるかもしれません。結論から言うと、インフラをコード化できるっていう画期的なやつです。

「インフラをコード化」と言われてもピンとこないかもしれませんが、簡単に言うと、サーバーやネットワークなどのIT環境を、コードを書くように設計、構築できるということです。プログラミングの世界では当たり前のように「コードで管理」っていうのがありますが、それがサーバーやネットワークにも適用できるようになったんですね。

設計図として

TerraformはHashiCorp社が開発していて、クラウドだけじゃなく、自社のデータセンターにあるリソースにも使えます。このツールのいいところは、設定ファイルを使って、人間が読める形でインフラの設計図を書けること。しかも、その設計図をもとに、実際のインフラを自動で作り出すことができるんです。

例えば、AWSやAzureみたいなクラウドサービスを使っていて、新しいサーバーを立てたい時、いちいちウェブのコンソールからポチポチ設定するのは結構大変ですよね。でも、Terraformを使えば、あらかじめ書いておいたコードに従って、サーバーが「ぱぱっと」立ち上がるわけです。

Terraformの仕組み

まず、Terraformは「プロバイダー」という仕組みを使っています。これは何かというと、Terraformがいろいろなサービスやプラットフォームと話をするための通訳みたいなものです。AWSやGoogle Cloud、Microsoft Azureはもちろん、GitHubやDatadogのようなサービスまで、多くのプロバイダーが用意されていて、それを使ってTerraformは様々なリソースを扱うことができるんです。

HCL

ここでいう「リソース」とは、サーバーやデータベース、ネットワークの設定といった、ITインフラの構成要素のこと。これらをTerraformでは、すべてコードで定義します。具体的には、設定ファイルにリソースのタイプと、その設定内容を記述するんですね。そして、この設定ファイルは「HCL(HashiCorp Configuration Language)」という読みやすい言語で書かれています。

たとえば、「ここにサーバーを立てて、このIPアドレスを割り当てて、そのサーバーにはこのソフトウェアをインストールして…」といったことを、人間が理解しやすい形でコードに落とし込むわけです。

ステップごとに

Terraformは「Plan」というステップで、あなたが書いたコードに基づいて、何が起こるかを教えてくれます。

これは「この設定を適用したら、どんなインフラがどう変わるのか」というのを確認できるということ。間違いがないか、ちゃんと予定通りに動くかを、実際に適用する前にチェックできます。

そして「Apply」というステップで、実際にインフラに変更を加えます。この時、Terraformはとても賢くて、必要な操作だけを選んで実行してくれるので、手作業でやるよりもずっと効率的で、ミスも少なくなります。

インストール方法

最初にやることは、Terraformをインストールすることです。公式のウェブサイトからダウンロードして、あなたのPCやサーバーにセットアップします。WindowsでもMacでもLinuxでも、ちゃんと対応しているので安心してください。

インストール方法

実際の実行手順は、今後ハンズオンを作成する予定です。

Terraformを使うメリット

コードでインフラを扱うって、最初は少し敷居が高く感じるかもしれませんが、慣れてくるともう手放せないですね。

最大のメリットは、インフラの構築と変更を自動化できることです。手作業でやると時間がかかるし、ミスも起こりがち。でもTerraformを使えば、設定ファイル一つで、クラウドのリソースを簡単に、迅速に、正確に管理できます。

その他にも様々あるので、いくつか紹介していきます。

べき等性の保証

Terraformは「べき等性」を保証する設計になっています。つまり、同じ設定を何度適用しても、同じ状態になるということ。これがあると、意図しない変更を防ぎながら、安定してインフラを管理できます。

Terraformの設定ファイルはテキスト形式なので、Gitなどのバージョン管理システムを使って、インフラの変更履歴の追跡もできます。

プロバイダーへの対応

Terraformは多くのプロバイダーに対応していて、AWSやAzure、Google Cloudだけでなく、Oracle CloudやIBM Cloudなど、幅広いクラウドサービスを一つのツールで扱えるのが魅力です。

ドキュメントとして

インフラをコードで定義することで、そのコード自体がドキュメントの役割を果たします。設定ファイルを見れば、どんなインフラがどう構築されているのかがすぐにわかる。これは知識の共有にも役立ちます。

ただ、ドキュメントとして利用するには、対象のプロバイダーやTerraformの仕組みについて、深い知見が必要かもしれません。

まとめ

Terraformは、インフラの設定をコードにするためのスマートなツールということがわかりました。手作業でサーバーを立てたり設定変えたりする代わりに、プログラムが全部やってくれるんですね。

コードでの管理、とっても助かります。
インフラ触っているとストレスやべーので。

今後はハンズオンも追加していくので、頑張って勉強していきましょう!

筆者情報
IT業界経験6年目のフルスタックエンジニア。
フロントエンドを軸として技術を研鑽中でございます。