Giới thiệu về Terraform

Tìm hiểu việc sử dụng Terraform trong việc xây dựng Hạ tầng, chuẩn hóa và xây dựng môi trường mới một cách nhanh chóng.

Infrastructure as code (viết tắt là IaC) là cách thức xây dựng hạ tầng IT bằng cách chạy các dòng mã (code) thay vì thực hiện một cách thủ công như truyền thống. 

Cách tiếp cận này được xem như là “immutable infrastructure”. Ưu điểm của việc này là việc kết hợp nay phân chia hạ tầng một cách linh hoạt chỉ cần thực hiện trên một máy local. Điều này mang đến sự chuẩn hóa và thống nhất cho việc xây dựng hạ tầng, tất các các thông số cấu hình, các bước thực hiện được thể hiện trên “source code” thay vì qua “trí nhớ” hay hay hệ thống tài liệu phức tạp. Việc triển khai trở nên nhanh chóng, linh hoạt và tiện lợi hơn.

Có rất nhiều công cụ và frameworks cho việc xây dựng hạ tầng trên Cloud. Terraform là một công cụ khá phổ biến và mạnh mẽ. Chúng ta sẽ tìm hiểu về Terraform (tập trung vào môi trường Cloud AWS) trong bài báo này.

Cấu trúc hạ tầng với Terraform bao gồm các file có định dạng ‘.tf’’. Lưu ý cú pháp, biến phải bắt đầu với ‘var’ và có giá trị mặc định.

variable “name” {

  type = “string”,

  default =”Raghu”

}

output “developer”{

  value=”${var.name}”

}

 

Terraform init

Trước khi chạy các file mã nguồn, cần phải thiết lập ban đầu cho Terraform. Terraform init được sử dụng để thiết lập cấu hình cho Terraform. Cấu trúc câu lênh là terraform init.

Terraform Plan

Để chạy file này, trước tiên cần phải tạo một ‘plan’. Plan sẽ chỉ ra các tài nguyên sẽ được tạo ra giúp rà soát toàn bộ các bước và tài nguyên sẽ sử dụng trước khi thực hiện. Chúng ta sẽ lưu ra một file ‘plan’ và sau đó apply nó vào hạ tầng cần xây dựng.

terraform plan -out first.terraform

terraform apply first.terraform

 

Tiếp theo, với lệnh “apply”, Terraform sẽ cập nhật các thay đổi trên môi trường cần xây dựng, và “output” các thông tin  về các tài nguyên đã được tạo.

Terraform Providers

Providers có nhiệm vụ quản lý vòng đời của tài nguyên ví dụ tạo một tài nguyên mới, hoặc cập nhật nó, v.v. Có rất nhiêu nhà cung cấp Cloud hỗ trợ Terraform, ví dụ: AWS, Google Cloud. 

Dưới đây là một mẫu cấu hình provider trên AWS. Bạn có thể export AWS secret và access key id bằng biến môi trường.

provider “aws” {

   region = “us-east-1”

}

resource “aws_instance” “my-vm-automated” {

   ami = “ami-a4c7edb2”

   instance_type = “t2.micro”

   tags {

     Name = “my-vm-automated”

   

}

 

Lưu ý ở đây chúng ta sẽ tạo 1 EC2 instance loại t2.micro, và được tagged với tên ‘my-vm-automated’.

Terraform State

Khi bạn cập nhật thay đổi, file ‘terraform.tfstate’ sẽ dược tạo ra. File này được sử dụng để lưu các cấu hình hiện tại trên hạ tầng và được sử dụng khi chúng ta chạy các files tuần tự, Terraform sẽ biết thây đổi nào cần cập nhật. Bạn nên commit file này kho lưu mã nguồn (repository), bạn sẽ cần trạng thái của hạ tầng hiện tại khi thực thi files.

Destroying Resources

Bạn có thể hủy toàn bộ tài nguyên đã được tạo ra với lệnh terraform destroy.

Kết luận

Terraform có nhiều tính năng mạnh mẽ và phổ biến, được hỗ trợ bởi nhiều nền tảng Cloud khác nhau. Việc tạo hạ tầng Cloud trở nên linh hoạt, nhanh chóng và tiện dụng với AWS CLI, GUI, và đặc biệt với công cụ Terraform.