🐣

変数の使い方 - Terraformのきほんと応用

2021/12/15に公開

ていねいを心掛けたTerraform記事です。スクリーンショット満載でやった気になれます。
Terraformといえばクラウドリソースの作成ですが、この記事ではローカルPC上のリソース作成で済むように工夫しています。
Terraform関連の他の記事は「Terraformのきほんと応用」からどうぞ。

概要

Terraformではプログラミング言語のように変数を定義することができます。
変数を使うことで、ソースコードを読みやすくしたり実行時に値を指定することができます。
この記事では、変数を使ってローカルファイルを作成します。

ゴール

ファイル名と中身を変数で指定してファイルを作成する。

必要なもの

  • 作業時間:15分
  • Terraformを実行できる環境

変数の種類と特徴

Terraformには2種類の変数があります。

  1. ローカル変数(Loacal Values)
    1つ目はローカル変数で以下の特徴があります。
    • 式をかける
    • 外部から指定できない
    • デフォルト値は定義できない
  2. 入力変数(Input Variables)
    2つ目は入力変数で以下の特徴があります。
    • 値のみ指定できる
    • 外部から指定できる
      • apply実行時に対話的に入力
      • コマンドライン実行時の-varオプションや-var-fileオプション
      • terraform.tfvarsファイル
      • 環境変数(TF_VAR_xxxなど)
    • デフォルト値の定義が可能

変数の作成方法とコードでの使用方法

  1. ローカル変数(Loacal Values)
    ローカル変数は locals セクションで定義して local.key名 の形式で使用します。ローカル変数は複数まとめて定義することができます。
    locals {
      content  = "use local values."
      filename = "hello_local.txt"
    }
    resource "local_file" "local_sample" {
      content  = local.content
      filename = local.filename
    }
    
  2. 入力変数(Input Variables)
    入力変数は variable セクションで定義して var.key名 の形式で使用します。入力変数は1つずつ定義し、デフォルト値を定義することができます。
    variable content {
      default = "use input variables default value."
    }
    variable filename {
      default = "default_input.txt"
    }
    resource "local_file" "input_sample" {
      content  = var.content
      filename = var.filename
    }
    

ローカル変数を使用してファイルを作る

  1. terraformコード作成する
    ローカル変数を使用するコードを作成します。

    helloworld_local.tf
    locals {
      content  = "use local values."
      filename = "hello_local.txt"
    }
    resource "local_file" "local_sample" {
      content  = local.content
      filename = local.filename
    }
    
  2. 実行結果を事前確認する
    実行結果を事前確認するための「plan」コマンドを実行します。ローカル変数を使用してファイルを作成できそうです。
    image title

  3. 実行してファイルを作成する
    ファイルを作成するために「apply」コマンドを実行します。
    image title
    ファイルが作成されています。
    image title
    ファイルの中身もローカル変数で指定した通りです。
    image title

入力変数を使用してファイルを作る

  1. terraformコード作成する
    入力変数を使用するコードを作成します。

    helloworld_input.tf
    variable content {
      default = "use input variables default value."
    }
    variable filename {
      default = "default_input.txt"
    }
    resource "local_file" "input_sample" {
      content  = var.content
      filename = var.filename
    }
    
  2. デフォルト値での実行結果を事前確認する
    実行結果を事前確認するための「plan」コマンドを実行します。入力変数のデフォルト値を使用してファイルを作成できそうです。
    image title

  3. デフォルト値でファイルを作成する
    ファイルを作成するために「apply」コマンドを実行します。
    image title
    ファイルが作成されています。
    image title
    ファイルの中身もローカル変数で指定した通りです。
    image title

  4. 実行時に値を指定して事前確認する
    入力変数の値をコマンド実行時に指定して事前確認します。先ほど作成したデフォルト値のファイルの置き換えで、指定した入力変数を使用してファイルを作成しそうです。
    image title

  5. 実行時に値を指定してファイルを作成する
    ファイルを作成するために「apply」コマンドを実行します。
    image title
    ファイルが作成されています。
    image title
    ファイルの中身は実行時に指定した通りです。
    image title

サンプルコード

この記事で作成したコードはgithub上に公開しています。

参考ページ

  • Terraformオフィシャルのlocal変数の説明ページ
  • Terraformオフィシャルのinput変数の説明ページ

次はこれをやろう

Terraform関連の他の記事は「Terraformのきほんと応用」からどうぞ。

GitHubで編集を提案

Discussion