06

Kỹ sư DevOps · Bước 6/8 · 8 phút

Hạ tầng dưới dạng code

Mô tả máy chủ, mạng và dịch vụ bằng file mà bạn có thể review, làm lại và quay lui.

Bấm chuột không mở rộng được

Bạn có thể dựng hạ tầng bằng cách bấm trong giao diện cloud. Để học thì được, nhưng không ai review được, không làm lại chính xác được, và không ai biết thứ Sáu tuần trước đã đổi gì. Hạ tầng dưới dạng code, IaC (infrastructure as code), là mô tả hạ tầng bằng file văn bản lưu trong Git.

Khai báo trạng thái cuối

Phần lớn công cụ IaC mang tính khai báo: bạn mô tả thứ cần tồn tại, công cụ tự tìm cách đạt tới đó. Bạn chạy plan để xem các thay đổi, review, rồi mới apply.

Luôn đọc plan. Một plan nói sẽ xoá và tạo lại cơ sở dữ liệu là lời cảnh báo, không phải chi tiết vụn vặt.

Các công cụ chính

Terraform của HashiCorp được dùng rộng rãi trên nhiều cloud. Giấy phép của nó thay đổi năm 2023, và cộng đồng đã tạo ra OpenTofu, một bản fork mã nguồn mở thuộc Linux Foundation, hoạt động gần như giống hệt. Pulumi cho phép dùng các ngôn ngữ lập trình thông thường. Mỗi cloud cũng có công cụ riêng: AWS CloudFormation, Azure Bicep và Infrastructure Manager của Google Cloud.

Để cấu hình phần mềm trên máy, Ansible rất phổ biến. Với Kubernetes, các đội thường lưu YAML trong Git và để một công cụ tự đồng bộ lên cụm, gọi là GitOps.

State và an toàn

Các công cụ như Terraform giữ một file state ghi lại những gì chúng quản lý. File này có thể chứa bí mật, nên hãy lưu ở một backend từ xa được bảo vệ, không đưa vào Git. Chỉ thay đổi qua code; sửa tay trên giao diện sẽ gây drift (lệch trạng thái) làm người tiếp theo bất ngờ.

Thử ngay

Chạy IaC mà không tốn tiền cloud

  1. 1.Cài OpenTofu hoặc Terraform trên máy.
  2. 2.Hỏi chatbot bằng câu lệnh bên dưới. Nó chỉ dùng provider local, nên không tạo gì trên cloud nào.
  3. 3.Chạy init, plan và apply. Đổi nội dung file trong code rồi chạy plan lần nữa để thấy khác biệt.
  4. 4.Chạy destroy và kiểm tra file đã bị xoá.
Viết một cấu hình OpenTofu hoặc Terraform tối giản chỉ dùng provider hashicorp/local để tạo một file văn bản. Giải thích init, plan, apply, destroy, và file state ghi lại những gì.
Vì sao nên đọc plan trước khi apply thay đổi hạ tầng?

Tự kiểm tra

Vì sao nên đọc plan trước khi apply thay đổi hạ tầng?