Danh sách bài viết trong series Sử dụng Ansible tự động hệ thống
- Bài 1: Ansible Là Gì Mà Dân DevOps Mê Thế?
- Bài 2: Ansible Inventory – Danh Bạ Server Của Bạn
- Bài 3: Ansbile Ad-Hoc – Lệnh Nhanh Như Chớp
- Bài 4: Ansbile Playbook Đầu Tiên – Đừng Sợ YAML
- Bài 5: Ansible Variables – Bí Kíp Linh Hoạt Hóa Mọi Thứ
- Bài 6: Ansible Module Nâng Cao – Mở Rộng Khả Năng
- Bài 7: Ansible Roles – Sạch Sẽ Như Nhà Mới Dọn
- Bài 8: Ansible Template Jinja2 – Config Động Như Phim Marvel
- Bài 9: Ansible Conditionals Và Loops – Đỉnh Cao Điều Khiển
- Bài 10: Ansible Error Handling – Không Panic Khi Fail
- Bài 11: Ansible Quản Lý Cloud – Chơi Lớn Với AWS
- Bài 12: Ansible Dynamic Inventory – Danh Sách Server Tự Động
- Bài 13: Ansible Vault – Khóa Két Sắt Cho Bí Mật
- Bài 14: Ansible Tower/AWX – Trung Tâm Điều Khiển DevOps
- Bài 15: Ansible Best Practices – Viết Ansible Sạch, Chạy Đỉnh Cao
Hồi nọ, mình ngồi cà phê với một ông anh làm DevOps, ổng kể: “Ngày xưa tao SSH từng server đến mỏi cả tay, có lần gõ nhầm rm -rf
suýt xóa luôn dữ liệu production!”. Mình nghe mà lạnh sống lưng, hỏi: “Vậy giờ anh làm sao mà sống nổi?”. Ổng cười: “Giờ có Ansible, tao chỉ cần viết vài dòng là xong, mày học đi không là tụt hậu đó!”. Nghe xong mình mò về tìm hiểu, và đúng là phát hiện ra “chân ái” của dân DevOps. Hôm nay, mình sẽ kể bạn nghe Ansible Là Gì, tại sao nó hot trong DevOps, cách cài đặt đơn giản, và thử làm cái “Hello World” đầu tiên để bạn thấy nó “thần thánh” ra sao nhé!
Ansible Là Gì? – Người Hùng Không Áo Choàng
Nói dễ hiểu, Ansible Là Gì nếu không phải là công cụ tự động hóa giúp bạn quản lý server mà không cần gõ lệnh tay từng cái? Hồi mới vào nghề DevOps, mình toàn SSH vào từng máy để cài package, copy file, restart service – vừa mệt vừa dễ sai. Có lần quản 5 server, mình gõ nhầm rm -rf
vào thư mục sai, may mà backup kịp, không thì nghỉ việc luôn. Sau vụ đó, mình quyết tìm cách làm cho đời bớt khổ, và Ansible xuất hiện như “người hùng không áo choàng”.
Vậy Ansible Là Gì trong thế giới DevOps? Nó là một công cụ open-source, dùng để cấu hình server, triển khai ứng dụng, và tự động hóa task. Điểm hay nhất là nó không cần cài agent lên server – khác với Puppet hay Chef, đòi hỏi setup phức tạp. Ansible chỉ cần SSH và Python (mà server nào chả có Python sẵn, đúng không?). Bạn viết vài dòng lệnh hoặc script (gọi là playbook), Ansible sẽ chạy trên hàng loạt máy một cách “ngon lành”. So với Bash script, Ansible Là Gì nếu không phải là phiên bản “nâng cấp” với siêu năng lực – thay vì SSH từng server kiểm tra disk, bạn chỉ cần một lệnh Ansible, nó lo hết!
Cài đặt Asible
Để bắt đầu, bạn cần cài Ansible Là Gì lên máy local – tức là máy bạn dùng để điều khiển server. Mình làm trên Ubuntu, nhưng cách này cũng áp dụng cho hầu hết Linux distro. Nếu bạn xài Mac hay Windows, mình sẽ chỉ thêm ở dưới nhé!
-
Update hệ thống trước cho chắc ăn:
sudo apt update
Cái này giống như khởi động nhẹ trước khi vào trận, tránh mấy lỗi lặt vặt kiểu package cũ. Mình từng quên bước này, rồi cài Ansible xong bị lỗi dependency, debug cả tiếng mới ra.
-
Cài Ansible luôn và ngay:
sudo apt install ansible -y
Chờ khoảng 30 giây đến 1 phút, tùy tốc độ mạng. Xong xuôi, kiểm tra xem cài được chưa:
ansible --version
Nếu ra kiểu
ansible [core 2.14.2]
hay tương tự, là thành công. Còn nếu báo “command not found”, kiểm tra lại quyền sudo hoặc lệnh cài đặt nhé. Mình từng gặp vụ này vì gõ thiếu-y
, mất công gõ lại. -
Setup SSH key – Bước Quan Trọng Không Thể Bỏ: Ansible dùng SSH để “nói chuyện” với server, nên bạn cần SSH key để khỏi gõ password mỏi tay (nhớ bài 13 Bash không?). Làm thế này:
ssh-keygen -t rsa
Nhấn Enter hết, không cần passphrase cho nhanh. Sau đó copy key sang server:
ssh-copy-id user@server1
Thay
user@server1
bằng user và IP thật của bạn. Mình dùngserver1
cho dễ hình dung thôi. Test SSH xem:ssh user@server1
Nếu vào được mà không hỏi password, là xong bước chuẩn bị! Mẹo nhỏ: Nếu server từ chối key, check quyền file
~/.ssh/authorized_keys
trên server, phải là600
nhé.
Thử Nghiệm Đầu Tiên – “Ping” Server Như Pro
Cài xong rồi, giờ làm gì? Mình nhớ lần đầu mò Ansible Là Gì, ngồi đọc tài liệu cả tiếng mà đầu óc quay cuồng. Rồi một ông bạn bảo: “Mày thử ping server đi, đơn giản lắm, kiểu ‘Hello World’ của Ansible đó”. Thế là mình làm theo, và thấy nó đúng là “thần thánh” thật.
Trước hết, bạn cần tạo file danh sách server, gọi là inventory. Đây là nơi bạn khai báo server nào sẽ bị Ansible “điều khiển”. Làm thế này:
nano hosts
Gõ vào vài dòng:
[webservers]
server1 ansible_host=192.168.1.10 ansible_user=ubuntu
server2 ansible_host=192.168.1.11 ansible_user=ubuntu
[webservers]
: Tên nhóm server, đặt sao cũng được, mình thích gọi vui là “đội quân web” cho sinh động.ansible_host
: IP của server (thay bằng IP thật của bạn nhé).ansible_user
: User SSH vào server.
Giờ thử “ping” xem Ansible Là Gì trong thực tế:
ansible webservers -i hosts -m ping
-i hosts
: Chỉ định file inventory.-m ping
: Module ping, kiểu hỏi “Server ơi, mày còn sống không?”.
Nếu mọi thứ ổn, bạn sẽ thấy:
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Thấy chữ “pong” là mừng nhé – server trả lời được, Ansible Là Gì nếu không phải là công cụ kết nối thần kỳ! Còn nếu lỗi kiểu “UNREACHABLE” hay “FAILED”, đừng hoảng. Mình từng gặp vụ này, hóa ra gõ sai IP – check lại hosts
hoặc thử SSH tay xem có vào được không. Thêm -v
để debug chi tiết:
ansible webservers -i hosts -m ping -v
Thực Hành Nhẹ: Hello Với Ansible
Ping được rồi, mình muốn làm gì vui hơn chút. Thử dùng Ansible Là Gì để chạy lệnh echo
trên server:
ansible webservers -i hosts -m command -a "echo Hello Ansible from $(hostname)"
-m command
: Module chạy lệnh shell.-a
: Argument, tức là lệnh bạn muốn chạy.
Kết quả sẽ kiểu:
server1 | SUCCESS | rc=0 >>
Hello Ansible from server1
server2 | SUCCESS | rc=0 >>
Hello Ansible from server2
Thấy chưa, chỉ một dòng mà cả đội server cùng in lời chào. So với SSH từng máy rồi gõ tay, Ansible Là Gì nếu không phải là “người bạn vàng” của DevOps? Mình nhớ lần đầu thấy output này, kiểu “Ồ, đơn giản vậy mà mạnh thế sao nổi?”. Nhưng cái hay của Ansible là bắt đầu nhỏ, rồi mở rộng ra quản lý cả trăm server – mình sẽ kể tiếp ở bài sau!
Mẹo Nhỏ Từ Kinh Nghiệm Thật
- Lỡ server không ping được?: Thêm
-v
để xem lỗi chi tiết (VD: “connection refused”). Mình từng quên cài Python trên server, thêm lệnh:ssh user@server1 "sudo apt install python3 -y"
- Quản lý nhiều server?: Thử thêm 3-4 IP vào
hosts
, ping hết một lượt xem tốc độ thế nào. - Mac/Windows thì sao?: Trên Mac, dùng
brew install ansible
. Windows thì cài WSL (Ubuntu) rồi làm như Linux nhé.
Tiếp Theo Là Gì?
Bài này chỉ là khởi động thôi, kiểu làm quen với Ansible Là Gì để bạn khỏi ngợp. Lần sau, mình sẽ kể bạn nghe cách quản lý inventory sao cho pro hơn – thêm biến, nhóm server, kiểu như sắp xếp “đội quân” của bạn cho gọn gàng. Từ vài server nhỏ, mình sẽ dẫn bạn đi đến quản lý cả cụm cloud luôn, chịu không?
Thử Nghiệm Nhẹ: Nếu bạn có máy ảo hoặc server thật (dù chỉ 1 cái), thêm vào hosts
rồi chạy lệnh ping và echo thử. Có gì thắc mắc cứ nhắn mình nhé – lần đầu chơi Ansible Là Gì kiểu gì cũng hơi bỡ ngỡ, nhưng yên tâm, mình đi cùng bạn!