- OpenTofu言語
- 構文
- スタイル規約
スタイル規約
OpenTofuパーサーでは、設定ファイル内の要素のレイアウトをある程度柔軟に行うことができますが、OpenTofu言語には、異なるチームが作成したファイルやモジュール間の一貫性を保つために、ユーザーが常に従うことを推奨する慣用的なスタイル規約もいくつかあります。自動ソースコードフォーマットツールは、これらの規約を自動的に適用することがあります。
tofu fmt
を実行することで、これらの規約を自動的に適用できます。
-
ネストレベルごとに2つのスペースでインデントします。
-
同じネストレベルで複数行の値を持つ複数の引数が連続する行に表示される場合は、それらの等号を揃えます。
コードブロック ami = "abc123"
instance_type = "t2.micro" -
引数とブロックの両方がブロック本体内に一緒に表示される場合は、すべての引数を上部にまとめて配置し、ネストされたブロックを下部に配置します。引数とブロックを区切るには、1つの空白行を使用します。
-
ブロック内の引数の論理的なグループを区切るために、空行を使用します。
-
引数と「メタ引数」(OpenTofu言語のセマンティクスで定義)の両方を含むブロックの場合は、最初にメタ引数をリストし、他の引数とは1つの空白行で区切ります。メタ引数ブロックは最後に配置し、他のブロックとは1つの空白行で区切ります。
コードブロック resource "aws_instance" "example" {
count = 2 # meta-argument first
ami = "abc123"
instance_type = "t2.micro"
network_interface {
# ...
}
lifecycle { # meta-argument block last
create_before_destroy = true
}
} -
トップレベルのブロックは、常に1つの空白行で互いに区切る必要があります。ネストされたブロックも空白行で区切る必要がありますが、同じタイプ(リソース内の複数の
provisioner
ブロックなど)の関連ブロックをグループ化する場合は例外です。 -
セマンティクスによってファミリーを形成すると定義されていない限り、同じタイプの複数のブロックを異なるタイプの他のブロックとグループ化することは避けてください。(例:
aws_instance
のroot_block_device
、ebs_block_device
、ephemeral_block_device
は、AWSブロックデバイスを記述するブロックタイプのファミリーを形成するため、グループ化して混在させることができます。)