Terraform for beginner – Giới thiệu về IaC và Terraform

Lời mở đầu

Chào mọi người!

Gần đây mình mới được ông sếp cho tham gia vào dự án về code infra với terraform.
Ban đầu chả biết gì về code cloud, hay terraform cả, nên khá là lo. Sợ làm toang dự án của cty 😀 . Nhưng sau khi làm 1 2 tháng thì thấy cũng có chỗ hiểu có chỗ không, đại khái là làm được việc. Nên mình muốn làm 1 vài bài viết để giới thiệu sơ qua cho ae có cái nhìn tổng quan về terraform, cũng như là về code infra.

Mình chia nội dung làm những phần sau:
1. Giới thiệu về IaC và Terraform
2. Xây dựng chương trình code IaC đầu tiên
3. Input và Output trong Terraform

Nội dung đầu tiên. Giới thiệu về IaC và Terraform.

IaC và Terraform

Infrastructure as code (IaC) tools allow you to manage infrastructure with configuration files rather than through a graphical user interface. IaC allows you to build, change, and manage your infrastructure in a safe, consistent, and repeatable way by defining resource configurations that you can version, reuse, and share.

Khi bắt đầu học và làm việc với cloud, cách phổ biến nhất mà chúng ta thường làm là login vào console của AWS (hoặc portal của Azure) để tạo 1 S3 bucket, 1 instance Ec2... Và khi không cần sử dụng service đó nữa, thì chúng ta cũng thao tác trên console để xóa resource. Cũng chả có gì nếu vấn đề chỉ là 1 hay 2 service.

Tuy nhiên, khi bài toán của chúng ta là xây dựng rất nhiều service, đập đi, dựng lại, rồi chuyển đổi region.... Thì cứ mỗi lần đem toàn bộ các service đã tạo ra và chỉnh sửa, sẽ tốn rất nhiều time, cũng như là dễ mắc lỗi.
Khi đó, chúng ta cần 1 cách làm thông minh hơn, an toàn hơn, nhanh hơn. Đó là khi chúng ta cần đến IaC.
Đơn giản thì thay vì dùng console để tạo 1 resource, chúng ta sẽ đi viết code cho cái resource đó. Khai báo tên bucket, chỉ định VPC, subnet, các setting... tất cả đều được làm bằng code. Và khi muốn thay đổi, chỉ cần sửa code và build lại -> Done!

Lợi ích của IaC:

  • Tăng năng suất bằng việc được tự động hóa: Thay vì thao tác trên console, sẽ nhanh hơn nếu làm với code.
  • Nhất quán trong việc thiết lập cấu hình: Khi muốn dựng lại resource trên Region khác, hoặc tạo nhiều môi trường (dev, test, product), chỉ cẩn build lại code.
  • Giảm thiểu lỗi thao tác con người: Làm nhiều thao tác lặp đi lặp lại, rất dễ xảy ra nhầm lẫn, sai xót. Nhưng code thì sẽ giảm được lỗi đó.

Về Terraform.
Terraform là 1 tool để code infra được cung cấp bởi HashiCorp. Cho phép xây dựng kiến trúc infra thông qua việc viết script, và quản lý vòng đời của các resource. So với việc thao tác thủ công, thì Teraform có lợi ích:

  • Có thể làm việc với nhiều nền tảng cloud: AWS, Azure, GCP...
  • Code nhanh chóng với lệnh script dễ học, dễ hiểu
  • Terraform quản lý bởi state (trạng thái), cho phép theo dõi thay đổi trong quá trinh deploy
  • Quản lý code theo version như GIT 1 cách thông thường

Terraform lifecycle


Để hình dung được cách Terraform làm việc, quản lý resource... thì hãy nhìn hình ảnh trên. Khi làm việc với Terraform thì cần nắm được 4 lệnh cơ bản này.

  • Terraform Init: Khởi tạo môi trường local. Thường chỉ cần chạy 1 lần cho mỗi lần deploy.
    Lệnh này sẽ đọc script bạn đã tạo, kiểm tra version và download các API package cần thiết cho quá trình deploy.
  • Terraform Plan: So sánh trạng thái của các service ở môi trường local và trên cloud. Đưa ra execution plan - như là các thay đổi trước và sau khi deploy. Quá trình này chưa thực hiện deploy bất kỳ cái gì lên cloud.
  • Terraform Apply: Thực hiện deploy, đẩy các thay đổi của source code lên cloud.
  • Terraform Destroy: Xóa toàn bộ các resource đã deploy trước đó.

Chi tiết thì ở phần tiếp theo, khi code thì mình sẽ nói lại.

Cài đặt Terraform

Để cài đặt Terraform, tùy thuộc vào OS, chỉ cần tải và cài đặt tại đây.
Sau khi download về và giải nén, chỉ cần chạy tệp terraform là được.
Cuối cùng, cần kiểm tra xem terraform đã được đưa vào biến môi trường PATH chưa.

Kiểm tra PATH trên Mac và Linux

Trước tiên, cần list ra toàn bộ biến PATH được ngăn cách bởi dấu ":" bằng lệnh sau:

$ echo $PATH

Nếu kết quả trên console không chứa terraform thì cần thêm terraform binary vào PATH thủ công.
Giả định là terraform được download về và nằm ở folder Downloads, và biến PATH của bạn có chứa /usr/local/bin, nếu không phải, bạn có thể thay đổi đường dẫn cho phù hợp.

$ mv ~/Downloads/terraform /usr/local/bin

Kiểm tra PATH trên Windows

Bước 1: Vào Control Panel > System > System settings > Environment Variables
Bước 2: Ở mục System variables, kéo xuống và chọn Path
Bước 3: Xác nhận Path đã chứa đường dẫn đến thư mục chứa terraform binary. Nếu chưa, hãy thêm thủ công.

Xác nhận việc cài đặt Terraform

Chạy lệnh bên dưới, nếu kết quả tương tự như dưới đây, tức là bạn đã cài đặt terraform thành công và sẵn sàng cho code ví dụ đầu tiên.

$ terraform -help
Usage: terraform [-version] [-help] <command> [args]

The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.
##...

Tạm thời đến đây đã nhé. Lần tới mình sẽ tạo script đơn giản về terraform.
Cảm ơn vì đã đọc bài viết của mình.
Chào và hẹn gặp lại.

Leave a Reply