1. Ansible giới thiệu?
1.1 Ansible là gì
Ansible là một công cụ mã nguồn mở được sử dụng để quản lý cấu hình, tự động hóa tác vụ (automation), và triển khai phần mềm trên nhiều máy chủ. Nó giúp quản trị viên hệ thống và DevOps tự động hóa các tác vụ thủ công lặp đi lặp lại, như cài đặt phần mềm, cấu hình hệ thống, quản lý dịch vụ, và triển khai ứng dụng.
Ví dụ: khi cần deploy application trước tiên phải setup môi trường như môi trường để chạy java, môi trường nodejs, database, nginx, firewall... thì ta có thể ssh vào để cài đặt tuy nhiên nếu có nhiều server thì phải ssh vào từng con một dẫn tới công việc phải lặp đi lặp lại. Hơn nữa khi deploy trên cloud còn có thể distributed ở nhiều region khác nhau.
Vậy nên Ansible ra đời để giải quyết vấn đề đó, nó sẽ tổng hợp các configuration vào các file để nó tự ssh tới các con server khác nhau và run các task mình đã defined.
1.2 Tại sao lại chọn Ansible
Agentless: Agentless là một thuật ngữ dùng để chỉ các công cụ hoặc phần mềm có thể hoạt động mà không cần cài đặt thêm phần mềm (agent) trên các máy đích (managed nodes) mà nó quản lý. Thay vào đó, công cụ agentless thường sử dụng các giao thức chuẩn có sẵn trên hệ thống, như: SSH, WinRm, ...
Dễ học, cộng đồng lớn.
1.3 Cách hoạt động.
Agentless: tasks được thực hiện từ máy của mình.
Automated: đáng tin cậy và giảm thiểu lỗi từ con người.
Playbooks: là tệp YAML định nghĩa các tác vụ cần thực hiện. Một playbook có thể bao gồm nhiều bước, áp dụng cho một hoặc nhiều máy đích.
Inventories: Là tệp chứa danh sách các máy đích mà Ansible sẽ quản lý. Inventory có thể ở dạng tệp tĩnh (/etc/ansible/hosts) hoặc động (Dynamic Inventory).
2. Ansible inventory
Setup host type connection và user, với ssh cần gen key và copy public key tới máy đích.
Kiểm tra kết nối:
Document: https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html
3. Ansible playbook
Ansible-playbook dùng để định nghĩa các tác vụ (tasks) mà Ansible sẽ thực hiện trên các máy đích.
Ví dụ về update các gói trên linux tạo file update_packages.yml
Run ansible:
Document: https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_intro.html