Bài viết này sẽ giúp bạn hiểu rõ:
- Ansible là gì? Vì sao chúng ta cần Ansible.
- Điều gì sẽ xảy ra nếu không có Ansible (hoặc công cụ quản lý cấu hình nào).
- Ansible giải quyết vấn đề như thế nào.
- Ưu điểm nổi bật của Ansible trong thực tế.
1. Vì sao lại cần Ansible?
Hãy tưởng tượng bạn có 200 server trong môi trường production. Một ngày, bạn nhận yêu cầu cài đặt gói unzip hoặc openssl trên toàn bộ server.
Làm thủ công:
- Đăng nhập vào từng server.
- Kiểm tra xem gói đã có hay chưa.
- Nếu chưa, tiến hành cài đặt.
- Thoát ra và chuyển sang server tiếp theo.
Trung bình 1 server mất khoảng 5 phút.
Với 200 server, bạn cần 200 × 5 = 1000 phút (~17 giờ).
Chưa kể rủi ro bỏ sót server hoặc cài sai package.
Một số quản trị viên sẽ nghĩ đến việc viết script (bash, python):
- Script 1: đăng nhập, kiểm tra, cài đặt gói cần thiết.
- Script 2: copy script 1 tới từng server rồi chạy.
Cách này giúp tiết kiệm thời gian, nhưng vẫn gặp vấn đề:
- Quá trình vẫn chạy tuần tự → mất khoảng 7 giờ cho 200 server.
- Dễ bị gián đoạn nếu một bước nào đó thất bại.
- Mã lệnh phức tạp, khó bảo trì.
Giải pháp tối cho vấn đề này là sử dụng Ansible. Ansible là một công cụ quản lý cấu hình và tự động hóa (Configuration Management & Automation Tool). Tức là, nếu bạn có nhiều server và cần cài đặt phần mềm, thay đổi cấu hình, hoặc triển khai ứng dụng, thay vì phải làm thủ công từng máy, Ansible sẽ giúp bạn làm tự động, đồng loạt, song song chỉ với một câu lệnh.
Một số đặc điểm nổi bật của Ansible:
- Agentless: Không cần cài đặt phần mềm trung gian trên server. Ansible kết nối qua SSH (Linux) hoặc WinRM (Windows).
- Dễ sử dụng: Nhiệm vụ được mô tả bằng Playbook (file YAML) – dễ đọc, dễ viết, gần như “ngôn ngữ tự nhiên”.
- Tự động hóa đa dạng:
- Quản lý cấu hình (Configuration Management).
- Triển khai ứng dụng (Application Deployment).
- Quản lý bản vá (Patch Management).
- Orchestration (triển khai hạ tầng trên Cloud).
- Open source và miễn phí: Không cần license trả phí.
- Dễ cài đặt: Cài chỉ bằng
pip install ansiblehoặcapt/yum install ansible.
Có thể hình dung Ansible giống như một “điều khiển từ xa” cho toàn bộ hệ thống, chỉ cần viết ra mong muốn (cấu hình, phần mềm, trạng thái server), Ansible sẽ tự động áp dụng trên tất cả các máy chủ.
2. Kiến trúc cơ bản của Ansible
2.1. Các thành phần cơ bản
Ở mức cơ bản, Ansible gồm những khối sau:
- Ansible Engine (hay Ansible Server/Master):
- Là máy chủ (Linux) nơi bạn cài đặt và chạy Ansible.
- Đây là trung tâm điều khiển, nơi bạn viết Playbook, lưu Inventory, và khởi chạy lệnh.
- Ansible Clients (Managed Nodes):
- Các máy chủ mà bạn muốn quản lý (Server 1, Server 2, Server N…).
- Chúng không cần cài phần mềm gì thêm, chỉ cần SSH (Linux) hoặc WinRM (Windows) để Ansible kết nối.
- Inventory File:
- File chứa danh sách các server cần quản lý.
- Có thể là IP hoặc hostname (FQDN) của các máy chủ.
- ansible.cfg (Configuration File):
- File cấu hình của Ansible.
- Trong đó có thông tin quan trọng như đường dẫn tới Inventory file, thiết lập kết nối, user mặc định…
- Playbooks:
- Nơi bạn mô tả các tác vụ (tasks) cần chạy trên server bằng YAML.
- Ví dụ: cài đặt gói
nginx, khởi động dịch vụ, copy file cấu hình…
2.2. Cách hoạt động
Luồng hoạt động cơ bản của Ansible:
- Người dùng (User) viết Playbook và xác định danh sách server trong Inventory file.
- Ansible Engine đọc ansible.cfg để biết đang dùng Inventory nào.
- Ansible Engine dùng SSH để kết nối đến các Clients.
- Nội dung trong Playbook được thực thi đồng thời (parallel) trên tất cả các server trong Inventory.

3. Hướng dẫn cài đặt Ansible
3.1. Cài đặt WSL trên Windows
Trước tiên, cần cài đặt Ubuntu 22.04 thông qua WSL.
- Mở PowerShell với quyền Administrator
→ Gõ lệnh sau để kiểm tra danh sách distro có sẵn:wsl --list -o - Cài đặt Ubuntu 22.04:
wsl --install -d Ubuntu-22.04 - Khởi động lại máy để hoàn tất quá trình cài đặt.
- Sau khi khởi động lại, nhập UNIX username cho hệ thống WSL, ví dụ:
ansible-server


3.2. Cài đặt Ansible trên Ubuntu (WSL)
Sau khi WSL đã sẵn sàng, mở Ubuntu Terminal trong WSL và chạy các lệnh sau:
sudo apt update
sudo apt install software-properties-common -y
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible -y
Kiểm tra phiên bản Ansible:
ansible --version
3.3. Cài đặt VS Code và Extension hỗ trợ
Để làm việc thuận tiện hơn, bạn nên cài đặt Visual Studio Code kèm theo extension:
- WSL: cho phép mở terminal và project ngay trong môi trường Linux.
- Ansible: hỗ trợ syntax highlight và auto-complete cho các playbook YAML.
Sau khi cài đặt, bạn có thể mở thư mục dự án trực tiếp trong WSL từ VS Code.

3.4. Kết nối Ansible tới các Client
Tạo SSH Key:
Trên Ansible server (WSL Ubuntu), tạo SSH key:
ssh-keygen -t rsa
Nhấn Enter để lưu key ở đường dẫn mặc định.
Copy SSH Key tới Client:
Giả sử client có IP 192.168.1.6, user đăng nhập là username:
ssh-copy-id username@192.168.1.6
Cấu hình Inventory File:
Mở file cấu hình host:
sudo vi /etc/ansible/hosts
Thêm nội dung sau:
[server]
web1 ansible_host=192.168.1.6 ansible_user=username
Kiểm tra kết nối:
Thực hiện lệnh ping bằng Ansible:
ansible all -m ping
Nếu thành công, bạn sẽ thấy output kiểu:
web1 | SUCCESS => {
"changed": false,
"ping": "pong"
}

4. Các file quan trọng trong Ansible
Mặc định, khi cài đặt Ansible xong, nó sẽ tạo cho chúng ta một thư mục tên là /etc/ansible. Trong thư mục này, có 3 thứ rất quan trọng mà bạn nên biết:
- File
hosts: nơi lưu danh sách các máy chủ mà Ansible sẽ quản lý. - File
ansible.cfg: file cấu hình chính của Ansible. - Thư mục
roles: nơi lưu trữ các role – cách tổ chức cấu hình theo kiểu chuyên nghiệp và rõ ràng hơn.
4.1. File hosts – Danh sách các máy chủ
Ansible cần biết “nó sẽ quản lý những máy nào”. Danh sách này được khai báo trong file hosts.
Bạn có thể kiểm tra nội dung file bằng lệnh:
cat /etc/ansible/hosts
Bạn có thể dùng lệnh này để ping toàn bộ các host:
ansible all -m ping
Hoặc chỉ ping một nhóm cụ thể:
ansible server1 -m ping
Nếu bị lỗi, đừng lo. Nguyên nhân là do Ansible kết nối với máy chủ thông qua SSH, nên bạn cần chắc chắn rằng:
- Máy bạn có thể SSH được vào máy đó.
- Đã cấu hình public key hoặc có sẵn password.
4.2. File ansible.cfg – Cấu hình Ansible
File ansible.cfg là nơi cấu hình Ansible: như file inventory nào sẽ được dùng, kết nối kiểu gì, log ở đâu, v.v.
Bạn có thể xem nội dung file bằng lệnh:
cat /etc/ansible/ansible.cfg
Từ phiên bản 2.12 trở lên, bạn có thể tạo file config mới bằng lệnh:
ansible-config init
Nếu muốn xem tất cả các thiết lập mặc định của Ansible, dùng lệnh:
ansible-config dump
4.3. Thư mục roles
Cuối cùng là thư mục roles. Đây là phần nâng cao hơn, giúp chúng ta tổ chức cấu hình một cách rõ ràng, có thể tái sử dụng dễ dàng. Mặc định thì thư mục này sẽ trống.
Cảm ơn bạn đã tham khảo ansible tutorial trên ttnguyen.net