🪐
TerraformCloudの変数でHCLを利用する
はじめに
TerraformCloudではterraform variables
を定義することで
terraformが使用する変数を設定することが可能です。
またその設定にはHCLを利用することが可能です。
今回はHCLを利用してterraform variablesの設定を試してみました。
前提
-
terraform login
済みであること
流れ
①コードを用意する
手持ちがない場合はtfファイルを用意します。
②terraform cloud上で変数の設定をする
こんな感じです
-
HCL
にチェックを入れる - keyに変数名を入れる
- valueをHCL形式で入力する
ということに気をつければOKです。
1行にHCLを修正する必要もないので、tfvarsで管理している場合はvalueへコピペで大丈夫だと思います。
以降はいくつかのパターンのコードを書いていきます。
Listを試す
sqs.tf
resource "aws_sqs_queue" "main" {
for_each = toset(var.sqs_settings)
name = each.value
}
variables.tf
variable "sqs_settings" {
type = list(string)
}
TerraformVariables
["queue1", "queue2", "queue3"]
Mapを試す
sqs.tf
resource "aws_sqs_queue" "main" {
for_each = var.sqs_settings
name = each.key
delay_seconds = each.value
}
variables.tf
variable "sqs_settings" {
type = map(any)
}
TerraformVariables
{
"queue1" = 10
"queue2" = 20
"queue3" = 30
}
Objectを試す
sqs.tf
resource "aws_sqs_queue" "main" {
name = var.sqs_settings.name
delay_seconds = var.sqs_settings.delay_seconds
tags = var.sqs_settings.tags
}
variables.tf
variable "sqs_settings" {
type = object({
name = string
tags = map(string)
delay_seconds = number
})
}
TerraformVariables
{
name = "test-sqs-queue"
tags = {
Environment = "Test"
Project = "Terraform Practice"
}
delay_seconds = 10
}
おわりに
HCLが使えるのはだいぶ助かりますね、設定も簡単。
こいつらもterraformで管理できる?っぽいので試してみたいです。
参考
Discussion