Ansible Role

Ansible Role
Image Source

Giới thiệu về Ansible Role

Mô tả: Ansible role cung cấp 1 framework và cấu trúc để thiết lập các tasks, variables, handlers, metadata, templates, và các files khác. Chúng cho phép ta sử dụng lại và chia sẻ Ansible code 1 cách hiệu quả.

Bằng cách này, chúng ta có thể tham chiếu và gọi đến roles ở nhiều playbook với chỉ 1 vài dòng code trong khi chúng ta có thể sử dụng lại cùng roles trên nhiều projects mà không phải lặp đi lặp lại code.

Hiệu quả của Roles trong Ansible

Khi bắt đầu với Ansible, chúng ta thường viết nhiều playbook để tự động hóa nhiều task một cách nhanh chóng. Trong quá trình đó, kỹ năng của chúng ta sẽ lên cao dần cho tới khi đạt đến 1 giới hạn. Và do đó, Ansible roles là thứ để bức phá giới hạn này.

Tổ chức Ansible content của chúng ta vào các roles cung cấp cho chúng ta 1 cấu trúc dễ dàng quản lý hơn nhiều so với sử dụng playbooks. Điều này có thể không quá rõ ràng trong những dự án nhỏ nhưng khi số lượng playbook tăng lên, độ phức tạp quả dự án cũng theo đó phát triển.

Cuối cùng, đặt Ansible code vào những roles cho phép ta tổ chức các dự án tự động hóa của mình thành các nhóm logic và tuân theo các mối bận tâm về nguyên tắc thiết kế phân tách. Sự phối hợp và tốc độ phát triển cũng được cải thiện nhiều khi những người dùng khác nhau có thể làm việc trên nhiều roles riêng biệt song song mà không phải sửa đổi chung 1 playbook.

Cấu trúc Ansible Roles

Role structure

Ansible sẽ kiểm tra các file main.yml, các biến trong vars, và nội dung liên quan trong mỗi đường dẫn con. Việc thêm vào những file YAML trong 1 vài đường dẫn là hoàn toàn có thể. Ví dụy, bạn có thể nhóm các tasks của bạn trong những file YAML riêng biệt tùy theo 1 vài đặc tính:

  • defaults: Bao gồm các giá trị mặc định cho các biến của role. Ở đây chúng ta định nghĩa 1 vài biến mặc định, nhưng chúng có độ ưu tiên thấp nhất và cũng thường bị ghi đè bởi các phương thức khác để customzie role.
  • files: Chứa các file tĩnh và custom mà role sử dụng để thực hiện một vài tasks nhất định.
  • handlers: 1 tập hợp các handlers mà có thể kích hoạt bởi các tasks của role.
  • meta: Bao gồm thông tin metadata cho role, nó có thể là các dependencies (phụ thuộc), tác giả, license, nền tảng khả dụng,…
  • tasks: 1 danh sách các tasks để thực hiện bởi role. Phần này có thể hiểu tương tự như task section trong 1 playbook.
  • templates: Bao gồm các file template Jinja2 sử dụng bởi các tasks của role.
  • tests: Bao gồm các file cấu hình liên quan đến kiểm thử role.
  • vars: Chứa các biến được định nghĩa cho role (các biến ở đây có độ ưu tiên cao hơn defaults).

Hướng dẫn cài đặt, sử dụng Ansile Role

  1. Cài đặt Ansible
  1. Sử dụng ansible role
  • Kịch bản: Sử dụng ansible role để đẩy 1 file bash bash-hello.sh lên server và chạy bash để in dòng chữ "Hello World" ra màn hình.
  • Cấu trúc của Ansible role Test
  • Nội dung file main.yml
  • Chạy lệnh và hiện thị kết quả ra màn hình

Command: "ansible-playbook -i ansible_hosts playbook.yml"