Ansible: Hướng dẫn copy file trên cùng một host với Ansible

169

Ansible: Hướng dẫn copy file trên cùng một host với Ansible | Trong bài viết này chúng ta sẽ cùng thực hành một nội dung nhỏ với Ansible, đó chính là làm thế nào để copy một file trên cùng một host Linux với hai thư mục khác nhau đây.

Như bạn biết thì Ansible có hỗ trợ module cp (LINK), tiếc thay module này chỉ có tác dụng copy file từ máy chủ Ansible đẩy lên máy chủ host theo kiểu chương trình ‘scp’ ấy. Chứ hoàn toàn không khả dụng cho mục đích copy file di chuyển từ thư mục A sang thư mục B trên cùng 1 host. Vậy phải làm chuyện này như thế nào với Ansible đây?

ansible copy file trên cùng một host

Có thể bạn cũng quan tâm các chủ đề khác
Ebook Ansible for DevOps PDF
Các mẹo giúp tăng tốc độ thực thi của Ansible
Hướng dẫn sử dụng lệnh Ansible Ad-Hoc cơ bản

Giải pháp copy file trên cùng một host với Ansible

Bạn có hai giải pháp để thực hiện chuyện này là :
– Sử dụng module thực hiện lệnh trên host Linux như : command , shell,..
– Sử dụng module ‘synnchronize’ để copy.

1. Sử dụng module ‘shell/command’ để copy file

Cách này coi như là cứu cánh cơ bản nhất khi bạn sẽ thực hiện câu lệnh bạn mong muốn trên máy chủ Host Linux với module Shell (LINK) hoặc Command .

Ví dụ 1.1 : ansible ad-hoc command

Ví dụ 1.2 : ansible playbooks

2. Sử dụng module ‘synchronize’ để copy file

Module Ansible ‘synchronize’ (Link) sử dụng chương trình ‘rsync’ nổi tiếng trên máy chủ host Linux để thực hiện sao chép thư mục hay file với nhiều tính năng hỗ trợ như ‘rsync’ thường gặp. Vậy sẽ chẳng có gì bất ngờ với cách sử dụng ‘rsync’ bằng module ‘synchronize’ phải không nào .

Mặc định ‘synchronize’ cũng chỉ copy dữ liệu từ máy chủ Ansible lên máy chủ Linux host, nếu bạn muốn copy sync 2 file hay 2 folder trên cùng một máy chủ Host Linux thì phải lưu ý option “delegate_to” .

Giá trị ‘delegate_to: source-server’ chỉ thông tin nguồn địa chỉ server của file mà ta set giá trị ‘src’, sẽ được sử dụng để copy sync.

Ví dụ 2.1: ansible playbook
– Copy file từ 2 thư mục trên cùng server A.

Ví dụ 2.2: ansible playbook
– Copy file từ Server A sang server B.

Lưu ý:
– Do module ‘synchronize’ sử dụng chương trình ‘rsync’ sử dụng cơ chế ‘compress’ nén dữ liệu mặc định để truyền dữ liệu tiết kiệm băng thông. Điều này vô hình chung làm chậm quá trình copy file trên cùng một host, vậy khi bạn cần copy file trên cùng một host. Hãy tắt tính năng compress với loại dữ liệu đuôi extension của bạn với option ‘–skip-compress=extension_file.
– Ta có thể Kết hợp nâng cao với giá trị biến ‘inventory_hostname’ đại diện cho thông tin host mà Ansible đang thực thi trong file inventory host.

Ví dụ 2.3: ansible playbook
– Copy file từ 2 thư mục trên cùng server A.

Vậy là bạn đã biết đã biết cách sử dụng Ansible để copy một file trên cùng một host Linux rồi. Vẫn còn rất nhiều các bài thực hành sử dụng Ansible nữa. Các bạn hãy đón đọc tại Cuongquach.com.

Nguồn: https://cuongquach.com/

Đánh giá sao từ người đọc :
[ Tổng : 3 - Trung bình: 5 ]

LEAVE A REPLY