Một số Ansible module mà bạn nên biết

Tram Ho


Ansible là một công cụ “Configuration Management”, tức là một công cụ hỗ trợ, cấu hình, cài đặt hệ thống một cách tự động. Các công cụ này giúp thực hiện triển khai hệ thống thuận lợi, hạn chế những công việc lặp đi lặp lại tiết kiệm thời gian, và có thể triển khai cho những hệ thống tương tự.

Một trong những khái niệm quan trọng trong ansible là modules. Modules là một thành phần cốt lõi của Ansible, nó là là một khối/đơn vị xử lý của một task (task thì sẽ thêm các biến, tham số vào nữa để việc xử lý trên remote server được mềm dẻo hơn). Trong Ansible, thay vì nói: “Ansible, hãy thực hiện lệnh này!”. thì bạn sẽ nói: “Ansible, hãy thực thi module này và cho phép nó chạy bất kỳ lệnh nào nó cần để hoàn thành công việc!”. Thông qua quá trình tìm hiểu và sử dụng Ansible, mình sẽ cùng các bạn tổng hợp lại một số Ansible modules cơ bản, thường xuyên được sử dụng mà bạn nên biết nhé!

Module 1: Package management

Đây là module được thiết kế cho hầu hết các trình quản lý gói (package management) phổ biến, chẳng hạn như apt, dnf,… cho phép bạn cài đặt các package trên hệ thống. Ngoài các chức năng cụ thể của từng trình quản lý gói thì hầu hết các trình quản lý gọi đều có thể install, update, upgrade, downgrade, remove, và list các packages.

Ví dụ, ở đây, mình có một task là install gói httpd trên CentOS/RHEL 8 sử dụng trình quản lý gói dnf.

Module 2: Flie

Trong Ansible, có nhiều các module làm việc với tệp tin, thư mục, links trên các node đích (node client) như copy, template, file,… thường được sử dụng. Trước tiên, chúng ta sẽ cùng tìm hiểu về file module. File module giúp quản lý tập tin và các thuộc tính của nó. Ngoài việc taọ, xóa, xác định vị trí của tệp tin file module cũng đặt các quyền và quyền sở hữu hay thiết lập symlinks cho tệp tin.

Ví dụ,

Module 3: Template

Có nhiều cách khác nhau với Ansible giúp bạn có thể thao tác với nội dung của tệp, ngoài template module thì mình còn thấy lineinfile module cũng rất phổ biến và được sử dụng nhiều. Tuy nhiên, đối với mình, sau khi sử dụng thì mình cảm thấy template module rõ ràng và dễ hiểu hơn khá nhiều so với lineinfile module

Template trong Ansible là một tệp chứa tất cả các tham số cấu hình của bạn, nhưng các giá trị động được cung cấp dưới dạng biến. Trong quá trình thực thi playbook, các biến có thể được thay thế bằng các giá trị bạn cần. Ngoài ra, bạn có thể làm được nhiều việc hơn là thay thế các biến, với sự trợ giúp của công cụ tạo template Jinj2. Bạn có thể có các câu lệnh có điều kiện, vòng lặp, viết macro, bộ lọc để chuyển đổi dữ liệu, thực hiện các phép tính số học, v.v. Các tệp template thường sẽ có phần mở rộng là .j2. Các biến trong tệp template sẽ được ký hiệu bằng dấu ngoặc nhọn kép, ‘{{biến}}’.

Ví dụ:

Module 4: Copy

Copy module là module thường được sử dụng khi chúng ta muốn sao chép một tệp tin từ Ansible server (Management node) đến các node đích (client node).

Ví dụ:

Modlue 5: Service

Đối với các node client là Unix/Linux, service module là một module rất hữu ích giúp kiểm soát các service chạy trên các server này. Giống với các module khác, service module cũng đi kèm với một số tham số và các tham số này có các tùy chọn riêng hoặc giá trị phù hợp. Sử dụng các tham số này và các giá trị bắt buộc, các banj có thể quản lý các service với các chức năng như stop, start, reload, … trên các node client.

Ví dụ:

Module 6: shell

Trong Ansible, chúng ta có shell module được sử dụng để chạy các lệnh thông qua shell (/bin/sh) trên các máy đích từ xa. Module này nhận các lệnh làm đầu vào cùng với một tập hợp các đối số.

Ví dụ:

Tạm kết

Tới đây, hi vọng các bạn đã có thể ghi nhớ và sử dụng được một số modules Ansible cơ bản được nêu ở trên. Ansible được xây dựng kèm theo với hàng ngàn module có sẵn khác nhau và vẫn đang tiếp tục được mở rộng, bạn có thể xem thêm tại đây. Bên cạnh đó, với Ansible, bạn cũng có thể tự viết các module Ansible riêng để phù hợp với nhu cầu sử dụng mình.

Nguồn tham khảo

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo