【Terraform】はじめてのTerraform
2023-10-31
azblob://2023/10/31/eyecatch/first-terraform_0.jpg

Terraformとは

TerraformはHashiCorpという会社が開発したIaCツール(Infrastructure as Code)です。

Terraformを使うことでAzureなどのクラウドリソースをコード化することができ、バージョン管理や再利用、共有などを行うことができます。

インフラをコード化することで以下のようなメリットがあります。

  • 効率的にインフラ環境を構築できる:コード化が完了していればTerraformを実行するだけで、定義されたリソース設定を基に構築してくれます。
  • 人的ミスの削減:Terraformが自動的にインフラを構築してくれるため、ヒューマンエラーを防ぐことができます。
  • 保守性の向上:インフラがコード化されたことによりGithubなどでバージョン管理を行うことができるようになりました。これにより、大規模な構成でもメンテナンスが行いやすくなります。

Terraformの基本的なワークフロー

Terraformでの一般的なワークフローは以下のようになります。

  1. Write(コードを書く): 構築したいリソースをコードで定義します。
  2. Plan(変更内容の確認):クラウド上のインフラと構成と、リソースを定義したコードを比較します。次のステップであるApply(変更の適用)を実行した際にリソースが作成されるのか、更新されるのか、または破棄されるのか教えてくれます。「terraform plan」コマンドで実行されます。
  3. Apply(変更の適用):コード化されたリソースの設定をクラウド上に適用します。「terraform apply」コマンドで実行されます。

どうやって書くのか

Terraform ではHCL(HashiCorp Configuration Language)と呼ばれる構文で定義リソースの設定を記述します。

以下の例は、HCLでAzureのリソースグループを定義しているコードです。

Javascriptresource "azurerm_resource_group" "example" {
	name     = "example-resources" 
	location = "West Europe"
}

「resource」というブロックの中に、リソース名とリージョンを指定しています。

どうやってクラウド上のリソースとコードを比較しているのか

Terraformでは「terraform.tfstate」というファイルにリソースの状態がJSON形式で保存されています。

「terraform plan」を実行した際は、「terraform.tfstate」とコード化されたリソース設定を比較することで、リソースがどう変更されるのかわかるようになっています。「terraform plan」が実行できるのは「terraform.tfstate」があるおかげということですね。

「terraform.tfstate」は「terraform apply」を実行するたびに更新されるので、常に最新の状態を保つようになっています。

デフォルトではローカルに自動生成されますが、クラウド上に保管することが推奨されています。

おわり

業務でTerraformを使いそうなので簡単にまとめてみました

ちなみにHashiCorpという名前は創設者であるMitchell Hashimotoさんの名前が由来しているそうです