Trong bài này viết này, chúng ta sẽ cùng tìm hiểu ansible playbook là gì? Một trong những phần quan trọng của Ansible. Đây chính là nơi ta “lập trình” cho Ansible biết phải làm gì với server của mình.
Xem thêm:
Ansible là gì? Vì sao chúng ta lại cần nó – Bài 1
Ansible Inventory – Bài 3
1. Ansible Playbook là gì?
Hiểu đơn giản, Ansible Playbook là một file định nghĩa những gì Ansible sẽ thực thi trên server. Tức là thay vì ngồi gõ lệnh thủ công, ta sẽ viết sẵn một file Playbook để Ansible tự động thực hiện giúp ta.
Khác với file inventory (có thể là ini hoặc yaml), Playbook chỉ có một định dạng duy nhất là YAML.
2. Cấu trúc cơ bản của một Playbook
Playbook gồm 2 thành phần chính:
- Play: Là nơi định nghĩa các nhóm server sẽ được áp dụng hành động.
- Task: Là từng hành động cụ thể được thực thi (như cài package, chạy lệnh, khởi động service…).
Một Playbook có thể chứa nhiều “play”, và mỗi “play” lại chứa nhiều “task”. Cách viết như sau:
- name: Install Apache Server
hosts: web
become: yes
tasks:
- name: Update system
apt:
update_cache: yes
- name: Install apache2
apt:
name: apache2
state: present
Giải thích:
-là dấu hiệu bắt đầu một “play”.- Trong “play” có phần
hosts(nhóm máy sẽ áp dụng),become: yes(chạy với quyền sudo), và danh sáchtasks. - Mỗi task gọi một module (ví dụ:
apt,service), và kèm theo các tham số tương ứng.
3. Playbook keywords
Trong Playbook, ta sử dụng một số từ khóa đặc biệt để cấu hình hành vi của Ansible, gọi là playbook keywords, ví dụ:
name,hosts,become,vars,handlers…- Trong mỗi task:
name,module,args…
Những từ khóa này có quy tắc indent (thụt lề) rất quan trọng. Ví dụ hosts, become, tasks phải nằm cùng cấp. Nếu sai indent, Playbook sẽ lỗi ngay lập tức!
4. Một vài lưu ý quan trọng khi viết Playbook
Đây là phần cực kỳ quan trọng nếu bạn không muốn bị lỗi vặt
- Phải viết đúng format YAML: indent bằng space, không dùng tab.
- Dữ liệu dạng list thì dùng
-, dạng dictionary thì dùngkey: value. - Thứ tự các task quan trọng — Ansible sẽ chạy từ trên xuống dưới.
- Trước khi chạy Playbook, đảm bảo inventory file đã được định nghĩa đúng.
5. Cách chạy một Playbook
Sau khi viết xong, bạn chạy bằng lệnh:
ansible-playbook -i inventory.ini playbook.yaml
Trong đó:
-ichỉ ra file inventory.- Bạn có thể thêm
-v,-vv,-vvv,-vvvvđể xem log chi tiết hơn. - Hoặc dùng
--checkđể chạy ở chế độ kiểm tra trước khi thực thi thật.
6. Ví dụ
Giả sử bạn cần cài MySQL trên Ubuntu 22.04. Đây là các bước thủ công:
apt updateapt upgradeapt install mysql-serversystemctl enable mysqlsystemctl start mysql
Thì tương ứng trong Ansible Playbook sẽ như sau:
- name: Install MySQL server
hosts: db
become: yes
tasks:
- name: Update apt
apt:
update_cache: yes
- name: Upgrade OS
apt:
upgrade: dist
- name: Install mysql-server
apt:
name: mysql-server
state: present
- name: Enable MySQL service
service:
name: mysql
enabled: yes
state: started
Chỉ cần viết Playbook, sau đó chạy ansible-playbook là xong. Không cần gõ từng dòng lệnh thủ công nữa. Cảm ơn bạn đã tham khảo ansible tutorial trên ttnguyen.net