Trang chủ Blog Phát triển offshore

Terraform và xây dựng cơ sở hạ...

Terraform và xây dựng cơ sở hạ tầng AWS đơn giản với terraform

Rabiloo

Khi triển khai những hệ thống mới, chúng ta có thể thực hiện thông qua UI (console) của các bên cung cấp dịch vụ cloud. Tuy nhiên khi hệ thống trở nên phức tạp, việc setup này sẽ gặp nhiều khó khăn. Đó là lý do tại sao infrastructure as code (tiêu biểu là terraform) ra đời.

1. Infrastructure As Code là gì ?

Infrastructure as Code là việc chúng ta dùng file để định nghĩa các stack có liên quan đến hệ thống. Từ đó có thể tự động hoá quá trình cấu hình cơ sở hạ tầng thay vì phải setup thủ công.

Hiện nay có nhiều công cụ hỗ trợ Infrastructure as Code xuất hiện như Terraform, Chef, Ansible, Puppet, SaltStack, CloudFormation.

Ví dụ về dùng Infrastructure as Code:

Bạn đã triển khai một hệ thống gồm VPC, Ec2, RDS, Redis lên AWS, giữa các tài nguyên có mối quan hệ với nhau nên việc triển khai khá mất thời gian. Một ngày nào đó, bạn cần xây dựng một hệ thống tương tự, nếu dùng Infrastructure as Code, bạn chỉ cần copy file cấu hình cũ (edit vài thông số nếu cần) rồi chạy lại. Không hề tốn công, bạn đã có ngay một hệ thống tượng tự.

Mô hình Infrastructure as Code

Mô hình Infrastructure as Code

2. Terraform là gì

Terraform là một công cụ nguồn mở giúp thực hiện Infrastructure as Code thuận tiện và dễ dàng hơn, viết bằng ngôn ngữ Go, do Hashicorp phát hành. Bạn có thể tham khảo thêm ở đây Terraform GitHub Repository

Bằng việc tạo ra các file .tf  rồi thực thi các file đó, các miêu tả trong file terraform của bạn sẽ được validate, sau đó terraform sẽ tiến hành tạo các tài nguyên tương ứng với miêu tả trong file.

Cách Terraform hoạt động

Cách Terraform hoạt động

3. Tại sao lựa chọn Terraform

Có nhiều công cụ hỗ trợ Infrastructure as Code nhưng terraform nổi tiếng là công cụ được yêu thích nhất. Một vài lý do chúng ta có thể chọn terraform như:

> Terraform cung cấp document đầy đủ dễ đọc, dễ tìm hiểu

> Phải công nhận rằng cộng đồng sử dụng Terraform khá nhiều. Bằng chứng là theo thống kê của IAC (một bên thứ 3 thống kê và so sánh giữa các thương hiệu), số lượng job cho Developer biết Terraform rất nhiều, cũng như số lượng thư viện khá lớn.

> Hỗ trợ nhiều nền tảng cloud (AWS, Azure, Google Cloud,…)

> Có thể quản lý hệ thống theo version của mình rất rõ ràng (tương tự như git) thông qua state. Trước khi thực hiện thay đổi ta có thể xem được những thành phần nào thay đổi tránh được nhầm lẫn.

Bảng so sánh của IAC giữa Terraform và các công cụ khác
Bảng so sánh của IAC giữa Terraform và các công cụ khác

Có thể bạn quan tâm: Quản lý cơ sở hạ tầng với Terraform - Những lợi ích khiến bạn nhất định phải lựa chọn. 

4. Xây dựng ứng dụng AWS cơ bản với Terraform

Để thực hiện được ví dụ này trước tiên bạn cần làm những việc sau:

> Cài đặt terraform ở đây 

> Cài đặt AWS CLI ở đây 

> Tài khoản AWS và AWS credentials, bạn có thể tạo ở đây 

> Cấu hình key AWS ở máy của bạn bằng lệnh “aws configure”, khi cấu hình bằng lệnh này, cấu hình sẽ được ghi vào file ~/.aws/credentials ở mac, linux hoặc file %UserProfile%\.aws\credentials ở Windows

Bắt đầu xây dựng file terraform đầu tiên

> Tạo thư mục make_ec2 bằng câu lệnh mkdir make_ec2

> Di chuyển vào thư mục đó cd make_ec2

> Tạo file main.tf touch main.tf

> Bằng text editor bạn sửa file cầu hình của main.tf có dạng như sau



terraform {

 required_providers {

   aws = {

     source  = "hashicorp/aws"

     version = "~> 3.27"

   }

 }

 required_version = ">= 0.14.9"

}

provider "aws" {

 profile = "default"

 region  = "us-west-2"

}

resource "aws_instance" "app_server" {

 ami           = "ami-830c94e3"

 instance_type = "t2.micro"

 tags = {

   Name = "ExampleAppServerInstance"

 }

}

 

> Tiếp tục chạy command sau để khởi tạo thư mục terraform terraform init, thông qua câu lệnh này các plugin được định nghĩa trong file sẽ được tải về trước

> Kiểm tra file đã viết đúng format chưa bằng câu lệnh terraform validate

> Sau khi validate thành công, chúng ta chạy câu lệnh terraform apply để khởi tạo Ec2. Sau khi thực hiện command này, terraform sẽ cho chúng ta biết những gì thay đổi, những gì được thêm mới hay bị xóa đi.

Xây dựng ứng dụng AWS cơ bản với Terraform

Những thay đổi sẽ được hiển thị ra

> Gõ yes để hoàn thành

Đến đây quá trình tạo Ec2 bằng terraform đã hoàn tất.

Kết luận

Qua bài viết này chúng ta đã hiểu được ý nghĩa của terraform cũng như Infrastructure as Code. Hy vọng bạn có thể áp dụng được những chia trẻ bên trên vào dự án phần mềm của mình. Cảm ơn các bạn đã đọc bài.

Nếu bạn đang cần tư vấn về bất kỳ điều gì về lĩnh vực công nghệ, dù chỉ là điều nhỏ nhất, đừng ngại liên hệ với đội ngũ tư vấn chuyên nghiệp và thấu hiểu của Rabiloo. Chúng tôi ở đây để lắng nghe và chia sẻ cùng bạn.


Bài viết liên quan

blog
HTTPS with SpringBoot