Terraform-HCL基礎構文

2581 ワード

HCL Syntax

resource "aws_vpc" "main" {
  cidr_block = var.base_cidr_block
}


<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
  # Block body
  <IDENTIFIER> = <EXPRESSIONS> # Argument
}
最初の命令=Block Type
2番目の命令=BlockタイプでサポートされているLabel(1つまたは0つ以上)
ex)resource「リソースタイプ」「リソース名」
キー値形式の変数値を指定します.
ex) cidr_block = var.base_cidr_block

TerraformがサポートするBlockタイプ


terraform, provider, resource, data, module, local, variable, output

Terraformファイル構造


ディレクトリ内にあります.tfファイルを作成する場合、tfファイルはHCL構文に従います.JSON拡張子をjsonとして使用することもできます.
Terraformを使用してinit、plan、applyコマンドを発行する場合は、現在のユーザーのディレクトリにあります.tfファイルと.tf.jsonファイルが検索されますが、サブディレクトリは参照されません.
tfファイルを作成する場合は、常にエンコードをUTF-8に設定する必要があります.
tfファイルを持つディレクトリをモジュールと呼びます.
モジュールはRootモジュールとChildモジュールに分けられる.

上の図に示すように、ディレクトリにa,b,cディレクトリ(モジュール)があり、cモジュールがa,bモジュールをインポートすると言うと、cはterraformapplyを実行し、cというワークスペースがルートモジュールとなり、cが使用するa,bモジュールがchildモジュールとなる.

ただし、cでterraformapplyを使用するのではなく、aでterraformapplyを使用すると、aはルートモジュールになります.

ArgumentsとBlock


BlockのLabelを作成する場合、このLabelの値はIdentifierと呼ばれ、いくつかの制限があります.
Identifierで入力できる値は、文字列、数字、-の4種類です.
しかし、Identifierは最初は数字を入力できませんでした.

Style Conventions

  • Indentはtabではなく2つのスペースです.
  • Blockで複数のArgumentsを定義する場合、=定義キーと値に基づいています.
  • Resourceを定義する場合、metaパラメータ、count、for、eachはヘッダに位置する傾向があり、lifecycleまたはdependentは下部に位置する傾向があります.
  • terraform fmt -diff


    Terraform fmt-diffコマンドを使用すると、会議の必要に応じてtfファイルに記述されたコードを変更できます.