📐
ファイル名=リソース名に強制するtflintをつくった
弊社のTerraform環境の命名規則が運用しやすいお気に入りの規則でしたが、特にtflintに定義されていなかったので、つくりました。
-
variable
,locals
,output
,provider
,module
はすべてvariable.tf
,locals.tf
,output.tf
,provider.tf
,module.tf
に定義する -
data
はすべてdata_<data_type>.tf
に定義する -
resource
はすべて<resource_type>.tf
に定義する
インストール方法
.tflint.hcl
plugin "file-name-is-resource-name" {
enabled = true
source = "github.com/shoppingjaws/tflint-ruleset-file-name-is-resource-name"
version = "0.1.12"
}
設定
各種定義するべきファイル名の規則は上書き可能です
.tflint.hcl
rule "file_name_is_resource_name" {
enabled = true
module_file_name_pattern = "^main.tf$"
variable_file_name_pattern= "^variable.tf$"
locals_file_name_pattern= "^locals.tf$"
provider_file_name_pattern= "^provider.tf$"
output_file_name_pattern= "^output.tf$"
module_file_name_pattern= "^module.tf$"
data_file_name_pattern= "^data_.*.tf$"
}
この規則のメリデメ
メリット
- 検索しやすい
vscodeなどでファイル名を指定して検索する機能を使うと、リソース名で絞り込みやすい - レビューしやすい
作成者の意図や癖が入らず、宣言が一意に定まるため揺れが減る
デメリット
- tfstateを分割していないと、1ファイルに大量のリソースが宣言されることになる
Discussion