Terraformのvariablesを使ってみる

例えばAzureのリソースをTerraformで管理しようとしたときに、
誰でも最初はmain.tfをこう書くんじゃないだろうか。

リソースグループ名だけまず作るやつ。

# Azurerm Provider
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=2.97.0"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "main" {
  name  = "koralle-sample-resources"
  location = "Japan East"
}

リソースグループ名はmain.tfにベタ書きするんじゃなく変数で定義したくなったとする。

その場合は、main.tfとは別にvariables.tfを作って、
その中でリソースグループ名を変数定義してあげれば良い。

variable "resource_group_name" {
  description = "Azure Resource Group Name"
  type = string
  default = "koralle-sample-resources"
}

このresource_group_nameという変数をmain.tfから参照する。

# Azurerm Provider
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=2.97.0"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "main" {
  name  = var.resource_group_name
  location = "Japan East"
}

たまたま Terraform x AWSのTutorialのページを見ていると、こんな事が書いてあった。

Note: Terraform loads all files in the current directory ending in .tf, so you can name your configuration files however you choose.

main.tfと同階層にある*.tfは全部Terraformに読み込まれるらしく、
ファイル名は自由に命名していいらしい。

つまりvariables.tfhogehoge.tfに変えてもいける...?(いけた)