Ansible là gì? Hướng dẫn tự động hóa hạ tầng cho người mới
Tìm hiểu chi tiết Ansible là gì, nguyên lý hoạt động bằng kiến trúc Agentless, và tại sao nó là công cụ Configuration Management hàng đầu.
Nhập môn DevOps
Phần 3 trên tổng số 4
Ansible là gì?
Ansible là một công cụ mã nguồn mở được phát triển bởi Red Hat, chuyên dùng để tự động hóa việc cấu hình phần mềm (Configuration Management), triển khai ứng dụng (Application Deployment) và điều phối hạ tầng (IT Orchestration).
Hiểu một cách đơn giản: Nếu bạn có 100 con server trống không và cần cài đặt Nginx, Node.js trên tất cả chúng cùng một lúc, thay vì SSH vào từng máy để gõ lệnh, bạn chỉ cần cấu hình một “kịch bản” (Playbook) trên Ansible. Ansible sẽ tự động làm nhiệm vụ đó trên 100 con server cho bạn chỉ trong chốc lát.
Tại sao Ansible lại cực kỳ phổ biến?
Trong thế giới Infrastructure as Code (IaC), Ansible nổi bật nhờ những điểm mạnh vượt trội:
1. Kiến trúc không Agent (Agentless)
Đây là “vũ khí tối thượng” của Ansible. Các công cụ khác như Chef hay Puppet yêu cầu bạn phải cài đặt một đoạn mã (gọi là Agent) lên tất cả các máy chủ mục tiêu (Target Node) thì mới điều khiển được. Ansible thì không. Nó sử dụng chuẩn SSH (hoặc WinRM với Windows) để đẩy lệnh thẳng vào máy chủ. Điều này giúp hệ thống sạch sẽ, bảo mật và cực kỳ nhẹ nhàng.
2. Ngôn ngữ YAML cực kỳ dễ đọc
Ansible sử dụng cú pháp YAML để viết các tập lệnh tự động hóa (gọi là Playbooks). Nhờ đó, ngay cả đội ngũ kiểm thử (QA), quản lý dự án hay những người không chuyên sâu về lập trình vẫn có thể đọc và hiểu được luồng hệ thống đang chạy.
3. Tính Lũy đẳng (Idempotency)
Nếu một lệnh trong Ansible đã thiết lập thành công trạng thái mong muốn (ví dụ: Tạo một thư mục /data), khi chạy lại tệp cấu hình đó 10 lần nữa, nó sẽ không cố tạo lại thư mục (gây lỗi) mà tự hiểu rằng hệ thống đã đạt trạng thái chuẩn.
Các thành phần cốt lõi trong Ansible
- Control Node (Máy điều khiển): Máy tính của bạn (đã cài đặt Ansible), nơi bạn sẽ chạy lệnh cấu hình.
- Managed Nodes (Máy mục tiêu): Các máy chủ (Linux/Windows) sẽ bị điều khiển bởi Control Node qua kết nối SSH.
- Inventory (Danh sách kiểm kê): Tệp cấu hình chứa danh sách tất cả các địa chỉ IP/Hostname của Managed Nodes mà bạn định thao tác.
- Playbooks (Kịch bản): Tệp YAML chứa danh sách các công việc (Tasks) cần Ansible thực thi.
- Modules (Mô-đun): Các mã thực thi nhỏ xíu đằng sau hậu trường (như module copy file, cài đặt yum/apt, khởi động systemd…). Bạn dùng module trong playbook để ra lệnh.
Bắt đầu với Ansible ra sao?
- Chuẩn bị 1 máy chủ Control Node (chạy Linux, có thể là máy cá nhân của bạn) và cài đặt rốt ráo bằng lệnh
sudo apt install ansible. - Chuẩn bị thêm 1-2 máy chủ ảo (EC2, Droplets hoặc máy ảo Docker/Vagrant) để làm cụm Managed Nodes.
- Tạo file
inventory.iniliệt kê các IP của các máy chủ ảo ảo kia. - Viết file
playbook.yamlđầu tiên để thử cài công cụhtopvà chạy lệnh thực thiansible-playbook -i inventory.ini playbook.yaml.
Bắt đầu bằng những thao tác đơn giản nhất thay vì cấu hình cả cụm hạ tầng khổng lồ ngay lập tức sẽ giúp bạn không ngợp thông tin. Chúc bạn sớm làm chủ Ansible!
Bình luận
Bài viết liên quan
DevOps là gì? Hướng dẫn toàn tập cho người mới bắt đầu
Khám phá khái niệm DevOps là gì, vòng đời DevOps, lợi ích và lộ trình học DevOps chuẩn nhất cho người mới bắt đầu.
Xây dựng CI/CD Pipeline tự động với GitHub Actions
Học cách thiết lập hệ thống Tích hợp liên tục (CI) và Phân phối liên tục (CD) tự động hoàn toàn bằng GitHub Actions.