Terraform の概要

完了

Terraform オープンソース IaC ツールでは、HashiCorp Configuration Language (HCL) と呼ばれる高水準構成言語を使用し、クラウド インフラストラクチャを定義したり、プロビジョニングしたりできます。 Terraform により、インフラストラクチャに必要な状態を記述する構成ファイルでインフラストラクチャが体系化されます。 Terraform では、Terraform プロバイダーを使用し、パブリック クラウド、プライベート クラウド、SaaS サービスなどのインフラストラクチャを管理できます。

Azure インフラストラクチャ用の Terraform プロバイダー

一部の Terraform プロバイダーでは、Azure インフラストラクチャを管理できます。

  • AzureRM: 仮想マシン、ストレージ アカウント、ネットワーク インターフェイスなどの Azure Resource Manager リソースを管理します。
  • AzureAD:グループ、ユーザー、サービス プリンシパル、アプリケーションなどの Microsoft Entra リソースを管理します。
  • AzureDevOps: エージェント、リポジトリ、プロジェクト、パイプライン、クエリなどの Azure DevOps リソースを管理します。
  • AzAPI: Azure Resource Manager API を使用して Azure リソースを直接管理します。 このプロバイダーは、最新の Azure リソースの管理を有効にして、AzureRM プロバイダーを補完します。
  • Azure Stack: 仮想マシン、DNS、仮想ネットワーク、ストレージなどの Azure Stack リソースを管理します。

ストレージ アカウントの作成

すべての Terraform 構成に provider ブロックが含まれている必要があります。 次の HCL コードでは、Azure Resource Manager プロバイダー (azurerm) が指定されています。 storageaccountexamplerg という名前の Azure リソース グループが場所 eastus に定義されています。 Azure ストレージ アカウントがリソース グループ内に作成されます。 ストレージ アカウント名は、md5 関数を介して生成された数値の最初の 24 文字です。

terraform {
  required_version = ">=0.12"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}
provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  location = "eastus"
  name     = "storageaccountexamplerg"
}

resource "azurerm_storage_account" "example" {
  name                     = substr(md5(azurerm_resource_group.rg.id), 0, 24)
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_kind             = "StorageV2"
  account_tier             = "Standard"
  account_replication_type = "LRS"
  access_tier              = "Hot"
}

Terraform コードを実行する

terraform init を実行すると、Azure リソースの管理に必要な Azure モジュールがダウンロードされます。

terraform init

terraform plan を実行し、構成ファイルに指定された構成を作成するために必要なアクションを決定します。 このコマンドを実行すると、実行プランが作成されるが、適用されません。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが想定したものと一致しているかどうかを確認できます。

terraform plan -out main.tfplan

実行プランの有効性を確認したら、terraform apply を実行してプランを適用します。 このコマンドによって、定義済みのリソースが作成されます。

terraform apply main.tfplan

ストレージ アカウントを確認する

Azure ストレージ アカウントを確認するために、terraform state show コマンドを使用できます。 このコマンドは、指定されたリソースの現在の状態を示します。

このモジュールで作成したストレージ アカウントの場合、このコマンドを実行すると、生成された名前と共に、ストレージ アカウント属性とその値の完全一覧が表示されます。

terraform state show 'azurerm_storage_account.example'

リソースをクリーンアップする

このモジュールで作成されたリソースが不要になったときは、-destroy フラグを指定して terraform apply を実行します。

terraform plan -destroy -out main.destroy.tfplan

terraform apply を実行し、実行プランを適用します。

terraform apply main.destroy.tfplan