Format convention cho file cấu hình Terraform với `fmt` – Cuongquach.com | Bài viết liên quan đến việc đưa các file cấu hình Terraform đang có “coding convention” cực kì xấu thậm tệ về một “coding convention” đẹp đẽ dễ nhìn hơn.
Sử dụng Terraform fmt để format convention
Giả sử bạn có một file cấu hình Terraform khởi tạo VPC AWS đơn giản như thế này chẳng hạn.
# vi main.tf provider "aws" { version = ">= 2.35.0" } # Terraforms state terraform { backend "s3" {} } # Create AWS VPC in Region locals { tag_name = "VPC-LAB-CUONGQUACH" } resource "aws_vpc" "this_vpc" { cidr_block = "10.10.0.0/16" instance_tenancy = "default" enable_dns_support = true enable_dns_hostnames = true enable_classiclink = true tags = { Name = "${local.tag_name}" Terraform = "True" } }
Bạn chạy terraform plan
vẫn sẽ ngon lành, vì không có gì sai ở trên cả. Nhưng bạn có thấy nó các cú pháp trình bày trong phần cấu hình trên, nếu không được chú ý xử lý các khoảng cách trắng giữa các config và giá trị của nó thì cực kì xấu không ? Cái này thường liên quan đến thuật ngữ “Code convention“.
Terraform hỗ trợ bạn một cú pháp lệnh (terraform fmt
) giúp các file cấu hình Terraform tự động canh chỉnh lại toàn bộ các khoảng trắng, vị trí block,.. cho đẹp mắt. Coding convention thường không giúp code chạy nhanh hơn, nhưng nó giúp duy trì code dễ đọc hơn. Chuẩn format mà Terraform mong muốn thể hiện bạn có thể tham khảo tại : https://www.terraform.io/docs/configuration/style.html
Lưu ý:
– Thường khi code Terraform mình sẽ xài các plugin IDE Terraform format lại chuẩn convention mà Terraform mong muốn.
– Còn nếu bạn lười hoặc không cài được plugin thì có thể sử dụng trực tiếp lệnh terraform fmt
.
Cú pháp lệnh (tham khảo):
terraform fmt [options] [DIR]
Thực hành lệnh như sau.
# terraform fmt -recursive main.tf # cat main.tf provider "aws" { version = ">= 2.35.0" } # Terraforms state terraform { backend "s3" {} } # Create AWS VPC in Region locals { tag_name = "VPC-LAB-CUONGQUACH" } resource "aws_vpc" "this_vpc" { cidr_block = "10.10.0.0/16" instance_tenancy = "default" enable_dns_support = true enable_dns_hostnames = true enable_classiclink = true tags = { Name = "${local.tag_name}" Terraform = "True" } }
Một lệnh thôi bạn đã format lại convention cho file cấu hình Terraform trông đẹp đẽ rồi đấy.
Nguồn: https://cuongquach.com/