Danh mục sản phẩm
Bài 92: Giới thiệu Ansible & Terraform trong quản lý hạ tầng mạng (mức nhận biết)
💡 Liên hệ thực tế
Ở Bài 87, anh Nam đã dùng Ansible để đẩy cấu hình NTP cho 40 switch đã có sẵn trong hệ thống. Nhưng nếu công ty mở thêm 1 chi nhánh hoàn toàn mới — cần dựng cả VPC trên cloud, security group, subnet — thì Ansible không phải công cụ được sinh ra cho việc đó.
Giống như xây nhà: Terraform xây khung nhà — nền móng, tường, cột, đúng theo bản vẽ thiết kế đã khai báo sẵn. Ansible sắp xếp đồ đạc bên trong — cấu hình, cài đặt, chỉnh sửa những gì đã tồn tại để hoạt động đúng ý muốn. Hai việc khác nhau, nhưng thường đi cùng nhau trong một quy trình automation hoàn chỉnh.
📘 Kiến thức cốt lõi
1. Nhắc lại Ansible
Ansible đã được giới thiệu ở Bài 87: là công cụ automation agentless (không cần cài phần mềm trên thiết bị đích), dùng playbook viết bằng YAML để mô tả cấu hình mong muốn, hoạt động theo mô hình push — control node chủ động kết nối (thường qua SSH) và đẩy cấu hình xuống thiết bị đích. Ansible thuộc nhóm configuration management (quản lý cấu hình): công việc chính là chỉnh sửa, đồng bộ cấu hình trên các thiết bị/hệ thống đã tồn tại sẵn.
2. Terraform là gì
Terraform là công cụ Infrastructure as Code (IaC) do HashiCorp phát triển, dùng để cấp phát (provision) hạ tầng — tức là tạo mới, thay đổi, hoặc xóa bỏ các tài nguyên hạ tầng (máy chủ ảo, mạng ảo, security group, subnet...) dựa trên một file mô tả trạng thái mong muốn.
- Terraform viết bằng ngôn ngữ khai báo riêng gọi là HCL (HashiCorp Configuration Language), không dùng YAML như Ansible.
- Terraform duy trì một state file — bản ghi lại chính xác Terraform đã tạo ra những tài nguyên nào, với cấu hình gì. Nhờ state file này, Terraform biết được điều gì đã thay đổi so với lần chạy trước (drift detection) và có thể tính toán chính xác cần thêm/sửa/xóa gì để khớp với file mô tả mới nhất.
- Terraform làm việc qua quy trình plan → apply:
terraform planhiển thị trước những thay đổi sẽ được thực hiện,terraform applymới thực sự áp dụng — giúp kỹ sư kiểm tra trước khi thực thi thay đổi lên hạ tầng thật.
3. Điểm khác biệt cốt lõi: Provisioning vs Configuration Management
| Tiêu chí | Ansible | Terraform |
|---|---|---|
| Nhóm công cụ | Configuration management | Infrastructure as Code (provisioning) |
| Việc chính | Cấu hình, chỉnh sửa hệ thống đã tồn tại | Tạo mới, thay đổi, xóa bỏ tài nguyên hạ tầng |
| Ngôn ngữ | YAML (Playbook) | HCL |
| Lưu trạng thái | Không duy trì state file riêng | Có state file, theo dõi chính xác tài nguyên đã tạo |
| Mô hình thực thi | Push — control node chủ động đẩy cấu hình qua SSH | Chạy từ CLI, giao tiếp với hạ tầng qua provider API, không cần agent |
| Ví dụ điển hình trong mạng | Đẩy cấu hình VLAN, NTP, ACL cho switch/router đã có sẵn | Tạo mới VPC, subnet, security group trên nền tảng cloud |
🎯 Cách nhớ ngắn gọn: Terraform trả lời câu hỏi "hạ tầng này có tồn tại chưa, nếu chưa thì tạo ra"; Ansible trả lời câu hỏi "hạ tầng đã tồn tại rồi, giờ cấu hình nó thế nào".
4. Vì sao hai công cụ thường được dùng cùng nhau
Trong một quy trình automation hoàn chỉnh, thứ tự phổ biến là:
- Terraform cấp phát hạ tầng nền tảng trước — ví dụ dựng VPC, subnet, security group trên cloud, hoặc tạo mới máy ảo chạy làm router/firewall ảo.
- Ansible chạy sau đó, cấu hình chi tiết bên trong hạ tầng vừa được tạo — ví dụ đẩy cấu hình VLAN, NTP, chính sách bảo mật vào đúng các thiết bị Terraform vừa dựng lên.
⚠️ Ở cấp CCNA, không yêu cầu viết được cú pháp HCL hay tự vận hành Terraform — chỉ cần nhận biết được vai trò của Terraform khác với Ansible ở điểm nào, và hiểu vì sao trong thực tế doanh nghiệp, việc quản lý hạ tầng mạng hiện đại thường kết hợp cả hai công cụ này với nhau, thay vì chỉ dùng một trong hai.
💬 Hỏi & Đáp nhanh
❓ Có thể dùng Terraform để cấu hình VLAN trên switch đã có sẵn giống Ansible không?
✅ Về mặt kỹ thuật một số provider có hỗ trợ, nhưng đây không phải thế mạnh của Terraform. Terraform được thiết kế để quản lý vòng đời tạo mới/xóa bỏ tài nguyên hạ tầng; việc chỉnh sửa cấu hình chi tiết trên thiết bị đã tồn tại vẫn là thế mạnh và mục đích chính của Ansible.
❓ State file của Terraform dùng để làm gì?
✅ State file ghi lại chính xác những tài nguyên Terraform đã tạo ra và cấu hình hiện tại của chúng, giúp Terraform so sánh với file mô tả mới nhất để tính toán đúng phần cần thêm, sửa, hoặc xóa ở lần chạy tiếp theo — đây cũng là cơ chế giúp Terraform phát hiện configuration drift (đã học ở Bài 87) đối với hạ tầng nó quản lý.
❓ Ansible và Terraform, cái nào có "agent" cài trên thiết bị đích?
✅ Cả hai đều agentless — không yêu cầu cài phần mềm riêng trên thiết bị/hạ tầng đích. Ansible dùng SSH để đẩy cấu hình, còn Terraform giao tiếp qua các provider API (ví dụ API của nhà cung cấp cloud) để tạo/quản lý tài nguyên.
📝 Bài tập đánh giá
Câu 1: Điểm khác biệt cốt lõi nhất giữa Terraform và Ansible là gì?
- A. Terraform dùng YAML còn Ansible dùng HCL
- B. Terraform chuyên cấp phát (tạo mới/xóa) hạ tầng, Ansible chuyên cấu hình hạ tầng đã tồn tại
- C. Ansible cần cài agent trên thiết bị đích, Terraform thì không
- D. Cả hai hoàn toàn giống nhau về chức năng, chỉ khác tên gọi
Câu 2: State file trong Terraform có vai trò gì?
- A. Lưu lại mật khẩu đăng nhập vào các thiết bị được quản lý
- B. Ghi lại tài nguyên Terraform đã tạo và cấu hình hiện tại, phục vụ so sánh với file mô tả mới nhất
- C. Thay thế hoàn toàn vai trò của file HCL trong việc mô tả hạ tầng
- D. Chỉ được dùng khi Terraform chạy trên hệ điều hành Linux
👉 Đáp án
Câu 1: B — Terraform là công cụ Infrastructure as Code chuyên provisioning (tạo mới, thay đổi, xóa bỏ tài nguyên hạ tầng), trong khi Ansible là công cụ configuration management chuyên cấu hình các hệ thống đã tồn tại sẵn; ngôn ngữ (YAML/HCL) hay việc dùng agent không phải là điểm khác biệt cốt lõi nhất (cả hai đều agentless).
Câu 2: B — State file giúp Terraform biết chính xác những gì nó đã tạo ra trước đó, từ đó so sánh với file HCL mới nhất để tính toán đúng phần cần thêm, sửa, hoặc xóa ở lần apply tiếp theo, đồng thời hỗ trợ phát hiện drift.
📚 Bài viết thuộc khóa học CCNA của VNExperts
🧭 Điều hướng
| ⬅️ Bài trước | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| Bài 91: JSON & YAML — định dạng dữ liệu dùng trong automation | Mục lục khóa học CCNA | Bài 93: AI/ML trong vận hành mạng hiện đại — xu hướng mới trong CCNA 2026 |
