はじめに
Terraform(テラフォーム)は、オープンソースであり、HashiCorp社がGo言語で開発したIaC(インフラをコードで管理)を実現するツールです
今やIaCを代表するツールの1つとして広く利用されるようになりました
私も最近このツールを知り、調べてみましたので、この記事でその概要を紹介します
Terraformの背景
現在、インフラ環境はクラウド化されておりAWSが主流となっています
数回のクリックで瞬時にサーバーを構築、変更を可能にしますが、クリックだけではサーバーを完全にコントロールするには不十分です
例えば下記のケースにおいてコントロールが難しくなります
- 同じ環境を再現する
- 手動操作では同じ環境を作ろうとすると微妙な差異が生まれてしまう恐れがあります
- 復元や再現性
- 手動操作だと、どの操作を行ったかの記録をする必要があり、ミスをしやすいです
- また、再現する際に資料などを通して確認しなければなりません
このような課題を解決するために、コードを使ってインフラ環境を構築・管理する手法(IaC)が登場しました。その代表例がTerraformです。
TerraFormの基本概念
Terraformは、インフラの設定をコードで記述し、そのコードを基にインフラを自動的に構築、変更、管理します
以下は、Terraformの基本概念です
- HCL(HashiCorp Configuration Language)
- Terraformの設定ファイルは、HCLという独自の言語で記述されます
- プロバイダー
- Terraformは「プロバイダー」を利用して、様々なクラウドサービス(AWS、Azure、GoogleCloudなど)やオンプレミスのリソースと連携します
- リソース
- リソースは、Terraformで管理するインフラの基本単位です
- サーバー、DB、ロードバランサーが含まれます
- モジュール
- 設定を再利用可能な形にまとめたものです
- 非常に単純なTerraformファイルを記述するだけでも、モジュールが作成されます
Terraformの特徴
- コードによるインフラ管理
- インフラをコード化することによって異なる担当者が作業を行う場合でも、一定の品質を担保できます
- オープンソースでの提供
- 無償のオープンソースで提供されているため、お金をかけずに利用イメージをつかむことができます
まとめ
Terraformは、インフラをコードとして管理し、自動化するためのツールです
HCLを使った分かりやすい設定や構成管理、ソースコードによる状態管理など、多くの利点があります
初心者から上級者まで、インフラの管理を効率化したい場合は強力な味方になることでしょう
自分も個人開発や業務でインフラ管理する際は導入してみたいと思います
参考リンク