Kiểm tra cấu hình Terraform với `validate`

Kiểm tra cấu hình Terraform với `validate`Cuongquach.com | Khi bạn code các file cấu hình Terraform, hẳn bạn sẽ băn khoăn không biết mình cấu hình như thế này như thế kia thì đã đúng cú pháp sử dụng, đã dùng đúng tên chỉ thị cấu hình chưa, đúng kiểu dữ liệu sử dụng không,… ? Thì thường bạn sẽ sử dụng luôn terraform plan để Terraform tiến hành plan cả một thư mục cấu hình, kiểm tra mọi thứ và thể hiện thông tin cuối cùng.

Nhưng với terraform plan , bạn sẽ phải đợi Terraform đọc thông tin state (local state hoặc remote state), kiểm tra các điều kiện thông tin cơ bản,.. vô tình bước này phải đợi và lâu. Thì Terraform cũng cung cấp cú pháp lệnh terraform validate giúp người dùng có thể kiểm tra nhanh tính hợp lệ của nội dung cấu hình Terraform giúp bạn.

terraform-validate

Kiểm tra cấu hình Terraform với `validate`

Ví dụ mình có một file cấu hình khởi tạo AWS VPC , mình sẽ tạo ra 2 tình huống cấu hình Terraform sai:

  • Sử dụng sai tên entry cấu hình như : instance_tenancy_what,..
  • Sử dụng sai kiểu dữ liệu dành cho entry cấu hình enable_classiclink.
# 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_what     = "default"
  enable_dns_support_is     = true
  enable_dns_hostnames_this = true
  enable_classiclink        = "{true}"

  tags = {
    Terraform = "True"
  }
}

Cú pháp terraform validate:

terraform validate [options] [dir]

Lưu ý:

  • Bạn phải khởi tạo terraform init cho thư mục cấu hình Terraform của bạn trước.
  • Terraform sử dụng các plugin provider, core binary terraform,… để hỗ trợ nhau trong quá trình kiểm tra .

Khi chạy terraform validate thì Terraform sẽ sử dụng các plugin, đã download theo yêu cầu provider, như plugin provider aws, kiểm tra đối chiếu các cấu hình Terraform về mặt cú pháp sử dụng, cách thức sử dụng, kiểu dữ liệu sử dụng, … sau đó in ra thông tin báo lỗi ở những phần cấu hình có vấn đề.

# terraform validate

Error: Unsupported argument

on main.tf line 19, in resource "aws_vpc" "this_vpc":
19: instance_tenancy_what = "default"

An argument named "instance_tenancy_what" is not expected here.


Error: Unsupported argument

on main.tf line 20, in resource "aws_vpc" "this_vpc":
20: enable_dns_support_is = true

An argument named "enable_dns_support_is" is not expected here.


Error: Unsupported argument

on main.tf line 21, in resource "aws_vpc" "this_vpc":
21: enable_dns_hostnames_this = true

An argument named "enable_dns_hostnames_this" is not expected here.


Error: Incorrect attribute value type

on main.tf line 22, in resource "aws_vpc" "this_vpc":
22: enable_classiclink = "{true}"

Inappropriate value for attribute "enable_classiclink": a bool is required.

Nếu mà file cấu hình đúng, hợp lệ thì bạn sẽ nhận được thông báo như sau.

# terraform validate
Success! The configuration is valid.

Cũng khá tiện lợi khi bạn có thể sử dụng tính năng này như 1 phần trigger mỗi khi lưu file cấu hình Terraform đấy, nhằm giúp kiểm tra tính hợp lệ của file cấu hình.

Nguồn: https://cuongquach.com/

Previous articleFormat convention cho file cấu hình Terraform với `fmt`
Next articleTìm hiểu về AWS Versioning IAM Policy
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !