Hôm nay mình sẽ viết 1 loạt bài về làm thế nào để định nghĩa và quản lý hệ thống bằng code mà cả thế giới đang dùng phổ biến đó là công cụ Terraform.

Terraform là 1 công cụ mã nguồn mở cho phép  bạn định nghĩa infrastructure với đa dạng cloud provider ví dụ: AWS, Azure, Google cloud, DigitalOcean ... hay cả vsphere Center VMware... sử dụng đơn giản, terraform là ngôn ngữ lập trình khai báo, triển khai và quản lý hệ thống với chỉ vài lệnh command CLI.

Mình sẽ liệt kê danh sách các tiêu đề kế tiếp của loạt bài về Terraform và sẽ update link ở đây để các bạn dễ follow theo nhé:

  1. Giới thiệu về Terraform.
  2. Cách quản lý terraform state.
  3. Cách viết module terraform và sử dụng lại nhiều lần.
  4. Terraform tips: loops, if-statement.
  5. Sử dụng Terraform với team.

Tại sao Infrastructure-as-code?

Khoảng thời gian trước, các bạn sysadmin khi triển khai hệ thống thì tất cả server, route table entry, từng dòng config service, dòng config database, load balancer được tạo và quản trị bằng tay. Điều này khiến nhiều thứ có thể xảy ra:

  • Miss dòng config của 1 server nào đó trong 1 đống server vừa triển khai, có thể phát hiện ngay hoặc xui xui thì khi traffic user ùa vào, hệ thống log, hệ thống alert sẽ cảnh báo.
  • Triển khai hệ thống chậm vì phải cấu hình từng server, verify lại các check list.
  • Hoặc optimize hệ thống chậm.

Thay vì SSH vào từng server cấu hình thì giờ đây Terraform có thể giúp bạn đưa các câu lệnh, dòng config vào code để định nghĩa, quản trị hệ thống:

  • Bạn có thể triển khai hệ thống với các câu lệnh, config được định nghĩa trong code, automate thực thi các dòng code của bạn nhanh hơn là làm bằng tay.
  • Bạn có thể dễ dàng tracking hệ thống thông qua file state được lưu mỗi lần triển khai, update hệ thống. Bất cứ ai cũng có thể đọc hiểu dễ dàng.
  • Có thể dễ dàng lưu các file state với version control, điều này có nghĩa là hệ thống của bạn được capture qua commit log. Có thể dễ dàng debug, compare với version cũ hoặc rollback hệ thống bằng version trước đó.
  • Bạn có thể review code hệ thống change hoặc automate test.
  • Bạn có thể viết thư viện, module để dễ dàng sử dụng lại nhiều nơi trong hệ thống, hoặc làm nó scale nhanh hơn và dễ dàng hơn.
  • Dựa vào file state có thể dễ dàng document lại hệ thống.

Ok, những thứ mình liệt kê ở trên cũng đủ thấy terraform có sức hút mãnh liệt rồi nhưng cái gì cũng có cái hay cái dở, bài kế tiếp mình sẽ giới thiệu đầy đủ, sâu hơn về Terraform nhé :D.