広告

Terraform-設定ファイルの基礎

GCP

今日から、terraformの詳しい使い方について、ドキュメントを見ながら、学習していきたいと思います。
まず最初、terraformの記述と仕組みから説明していきます。

terraformの記述形式

terraformで定義する設定内容は基本.tf拡張子のファイルに記述します。
.tfファイルの記述形式は基本以下のようになります。

<BLOCK TYPE> "<BLOCK LABEL>" ["<BLOCK LABEL>" ... ]{
  # BLOCKの中身
  <IDENTIFIER> = <EXPRESSION> # 引数
}

resourceの定義内容を例として、以下のようになります。

# <BLOCK TYPE>はprovider
# "<BLOCK LABEL>"は"google"
provider "google" {
    project = "test-project"
    region = "asia-northeast1"
    zone = "asia-northeast1-a"
}

# <BLOCK TYPE>はresource
# "<BLOCK LABEL>"は"google_compute_instance"と"vm_instance"
resource "google_compute_instance" "vm_instance" {
    name = "terraform-instance"
    machine_type = "f1-micro"

    boot_disk {
        initialize_params {
            image = "debian-cloud/debian-9"
        }
    }

    network_interface {
        network = "default"
        access_config {
        }
    }
}

terraform設定ファイルの特徴

terraformの設定ファイルは以下の特徴、注意点があります。

  • terraform読み取れる拡張子は2種類あります。
    • .tf:推奨
    • .tf.json:(中身はjson形式で書く必要がある)
  • UTF-8エンコードは必須
  • 改行コードはLF(Linux)が推奨、ただしCRLF(Windows)も問題ない
  • .tf(或いは.tf.json)は相互呼び出しで、ファイル分離できます。ディレクトリ分離も可能
  • terraformは設定言語のため、.tfファイル内のリソースの記述順番は影響しない
    • terraformは自動的に順番を整えてくれる
    • ただ、リソース定義の内部のprovisioner blockだけは、順番に気を付けるべき

terraformとproviders

terraform自体はリソースを作成することはできません。リソースを作成できるようにするために、providersというプラグインが必要です。例えばGCPのリソースを作成したいであれば、terraformにGCPのprovidersプラグインを追加する必要があります。
更にいうと、リソースを作成するのはprovidersプラグインです。terraformはただどのプラットフォームでも同じ文法でリソースを定義できるようにするためのものにすぎません。(コンフィグレーション エンジンを提供する)

最後に

今回は、terraform設定ファイルに関する基礎の部分を説明しました。
内容はそこまで多くはないですが、今後使っていく際に、落とし穴が出やすいところです。

ここまで読んでいただいて、お疲れ様でした。

コメント

タイトルとURLをコピーしました