HashiCorp社が提供するTerraformは、マルチクラウド上のコンピュータやネットワークの構築を自動化する、エンジニアにとても人気のあるツールです。
Terraformとは
Terraformとは、HashiCorp社により開発されているオープンソースのインフラ自動構築ツールです。TerraformではAWSなどのクラウドサービス上のインフラリソース(例えばサーバやネットワークなど)をコードで定義します。
Terraformは作成したコードに基づいて自動でリソースを構築します。Terraformを利用することでオペレーションミスが無くなるほか、複数システムでコードを再利用することで効率化を図ることが出来ます。また、一度に大量のリソースを定義することで手動よりも早く構築することが可能になります。
このようにインフラリソースをコードで定義することをInfrastructure as Code(IaC)と呼びます。他のIaCツールとしてはサーバ内の設定変更を得意とするAnsibleなどが有名ですが、Terraformはクラウド上のリソースを構築することに長けています。クラウドリソースはTerraformで構築し、サーバ内の設定変更はAnsible、といった使い分けが可能です。
Terraformと似た位置付けのツールにAWS CloudFormationが存在しますが、Terraformとは違いAWS専用です。TerraformはAWSだけでなくAzureやGCP、GitHub、Datadogなど、複数のクラウドプロバイダーに対応しているため、マルチクラウド環境においても構築手段を統一することが出来ます。
Terraformは、いわゆる宣言型の方法を採用しており、インフラの望ましい状態を構成ファイルで宣言します。Terraformは、インフラの望ましい状態を達成するために最小限のことだけを行います。
Terraformのメリット
公式ドキュメントがわかりやすい
公式ドキュメントが見やすく、構成がとてもわかりやすいということが挙げられます。公式ドキュメントがわかりやすいというメリットは、ユーザーにとってとてもありがたいことです。公式ドキュメントが見づらくわかりにくいツールだと、なかなか作業が進まず滞ってしまうリスクが高くなります。しかし、公式ドキュメントが見やすければ、スムーズに作業しやすくなるので、メリットといえるでしょう。
少量の記述量で宣言が可能
少量の記述量で宣言が可能ということがあげられます。TerraformにあるWorkspaceという機能を利用することで環境を切り替えられ、一度書いたことのあるリソースを再利用して使い回すことが可能です。そのため、少量の記述量での宣言が可能になります。
情報量が豊富
あまり人に使われないようなツールだと情報を探すことが困難でサービスを提供することが難しくなるでしょう。Terraformを利用している企業が非常に多いという理由で、情報量が豊富ということです。
学習コストの低さ
Terraformは、インフラのコード化をセキュアに作成・共有、または変更でき、マルチクラウド環境で同じコードを利用できるため学習コストの削減が期待できます。
Terraformのデメリット
サービス内容が成長過程
サービス内容自体が成長過程の最中だということです。Terraformは、成長段階でこれからのバージョン変更などによって、今までの仕様や形式などの破壊的変更が起こりうるというデメリットがあります。そのため、ユーザーのTerraform利用が困難になるということが今後、可能性としては考えられます。
自由度の低さ
Pulumiなどのようなアプリケーション言語で記述できるツールと比べると、Terraformはデプロイ前後の処理の自由度が低めです。