今日から、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設定ファイルに関する基礎の部分を説明しました。
内容はそこまで多くはないですが、今後使っていく際に、落とし穴が出やすいところです。
ここまで読んでいただいて、お疲れ様でした。
コメント