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