Infrastructure as Code (IAC) giúp tự động hóa quá trình triển khai hạ tầng bằng mã nguồn thay vì thao tác thủ công. Trong số các công cụ IAC phổ biến, Terraform nổi bật nhờ khả năng hỗ trợ nhiều nền tảng đám mây và dễ sử dụng. Bài viết này sẽ giúp bạn hiểu rõ về Terraform và Infrastructure as Code.
1. IAC là gì?
Trên AWS, khi cần máy ảo (EC2) hay database, ta thường thao tác trực tiếp trên Web Console để tạo chúng. Nhưng khi hệ thống ngày càng lớn, việc quản lý trở nên khó khăn: ta không nhớ hết các tài nguyên, người quản lý nghỉ việc thì người mới khó tiếp nhận, hoặc nếu ai đó vô tình xóa tài nguyên, ta phải tạo lại thủ công mà không chắc cấu hình ban đầu. Nếu cả hạ tầng bị lỗi, ta phải xây dựng lại từ đầu, rất mất thời gian.
IaC (Infrastructure as Code) giúp giải quyết vấn đề này bằng cách lưu hạ tầng dưới dạng code. Khi có sự cố, ta có thể nhanh chóng khôi phục hoặc triển khai lại hệ thống một cách dễ dàng và chính xác. Vậy IAC là gì?
Infrastructure as Code (IAC) là phương pháp quản lý hạ tầng IT bằng cách sử dụng mã nguồn. Thay vì triển khai thủ công, các tài nguyên trên đám mây như VMs, Disks, Network,… đều có thể được tạo ra thông qua code.
Lợi ích của IAC:
- Tự động hóa: Loại bỏ thao tác thủ công, giảm thiểu sai sót.
- Nhất quán: Môi trường được triển khai với cấu hình đồng nhất.
- Tái sử dụng: Mã IAC có thể được sử dụng lại cho nhiều lần triển khai.
- Dễ quản lý: Có thể kiểm soát, theo dõi và thay đổi hạ tầng một cách dễ dàng.
- Tăng tốc độ triển khai: Tạo môi trường nhanh hơn so với phương pháp truyền thống.
2. Terraform là gì?
Terraform là một công cụ mã nguồn mở được phát triển bởi HashiCorp giúp tự động hóa việc triển khai và quản lý hạ tầng IT bằng cách sử dụng các tệp cấu hình. Thay vì cài đặt và cấu hình môi trường thủ công, Terraform cho phép bạn định nghĩa toàn bộ hạ tầng dưới dạng code. Chỉ với một lệnh duy nhất, bạn có thể tạo, thay đổi hoặc xóa hạ tầng một cách nhất quán và đồng bộ, giúp tối ưu hóa quy trình triển khai và quản lý hệ thống.
Nhiều công cụ khác cũng hỗ trợ triển khai hạ tầng, chẳng hạn như Ansible. Tuy nhiên, Ansible được thiết kế chủ yếu để quản lý cấu hình hệ thống hơn là IaC, nên việc sử dụng nó để quản lý hạ tầng có thể dẫn đến các tác vụ không cần thiết.
Một quy trình triển khai ứng dụng tối ưu có thể gồm các bước sau: sử dụng Terraform để tạo hạ tầng, sau đó dùng Ansible để cấu hình máy chủ (cài đặt Docker, thiết lập CI,…), và cuối cùng triển khai ứng dụng bằng Docker hoặc Kubernetes.
3. Tại sao nên dùng Terraform
Terrafom không chỉ là công cụ tự động hoá biến những dòng mã thành hạ tầng. Mà Terraform còn đem đến nhiều lợi ích:
- Tự động hóa triển khai: Không cần thiết lập thủ công, Terraform giúp tạo và quản lý hạ tầng hoàn toàn tự động.
- Hỗ trợ nhiều nền tảng: Terraform hoạt động trên cả Public Cloud (AWS, Google Cloud, Azure, Oracle Cloud, Alibaba Cloud, Kubernetes…) và Private Cloud (OpenStack, VMware vSphere, v.v.).
- Quản lý phiên bản hạ tầng: Dễ dàng theo dõi, cập nhật và quay lại phiên bản cũ khi cần. Ví dụ, bạn có thể nâng cấp hệ thống từ phiên bản X lên Y mà vẫn giữ mã triển khai cũ để khôi phục nếu cần.
- Tái sử dụng mã nguồn: Hạ tầng có thể được triển khai nhiều lần mà không cần viết lại từ đầu.
- Tiết kiệm thời gian và chi phí: Việc thiết lập hạ tầng thủ công có thể mất nhiều ngày hoặc tuần, trong khi với Terraform, bạn có thể hoàn thành trong vài phút hoặc giờ, giảm chi phí vận hành và hạn chế lỗi.
- Giảm rủi ro sai sót: Triển khai thủ công dễ dẫn đến lỗi cấu hình, như thiết lập sai kích thước máy chủ hoặc quyền truy cập. Terraform giúp chuẩn hóa hạ tầng, giảm thiểu các sai sót này.
4. Hướng dẫn cài đặt Terraform trên Windows và Linux
4.1. Cài đặt Terraform trên Windows
Việc cài đặt Terraform trên Windows bao gồm tải về gói Terraform phù hợp, giải nén và thiết lập đường dẫn trong biến môi trường. Thực hiện theo các bước sau:
1. Truy cập trang Install Terraform.
2. Chọn Windows dưới mục “Operating System”. Chọn phiên bản AMD64 cho Windows 64-bit.
3. Giải nén tệp tải về và chọn một vị trí dễ nhớ, ví dụ: C:\Terraform.
4. Mở Start Menu, gõ “environment” và chọn Edit system environment variables. Trong cửa sổ System Properties, nhấn Environment Variables.
5. Chọn Path trong “System variables” để áp dụng cho tất cả tài khoản hoặc chọn “User variables” nếu chỉ muốn áp dụng cho tài khoản hiện tại.
6. Nhấn New, nhập vào đường dẫn thư mục C:\Terraform. Nhấn OK để lưu các thay đổi.
7. Nhập lệnh: terraform -version
Kiểm tra phiên bản Terraform đã cài đặt.
4.2. Cài đặt Terraform trên Linux
1. Tải khoá chữ ký HashiCorp:
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
2. Thêm repo HashiCorp và xác định phiên bản hệ điều hành:
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
3. Cập nhật danh sách gói:
sudo apt update
4. Cài đặt Terraform:
sudo apt install terraform
5. Kiểm tra phiên bản Terraform đã cài:
terraform -version
Terraform và Infrastructure as Code là hai yếu tố quan trọng giúp tự động hóa và tối ưu hóa việc triển khai hạ tầng IT. Bằng cách sử dụng Terraform, bạn có thể đảm bảo môi trường triển khai nhất quán, tiết kiệm thời gian, giảm thiểu rủi ro và cải thiện hiệu suất DevOps.