Sự khác biệt giữa Ansible Module Command và Module Shell | Heyo, nếu bạn đang quản trị chương trình Ansible để tự động hoá các tác vụ trên máy chủ remote. Sẽ có những lúc bạn cần thực hiện các câu lệnh đơn giản thay vì xài module khác phải không nào ? Việc thực hiện các câu lệnh có thể được hỗ trợ bởi module Shell hoặc module Command . Vậy đâu là sự khác biệt giữa hai module này mà ta cần biết để lựa chọn sử dụng.
Có thể bạn quan tâm chủ đề khác
– Tìm hiểu cấu hình Handler trong Ansible
– Cấu hình Retry task trong playbook Ansible
– Hướng dẫn copy file trên cùng một host với Ansible
– Ansible: Các mẹo giúp tăng tốc độ thực thi của Ansible
– Tầm quan trọng của Tự động hoá trong Công Nghệ Thông Tin
Ansible Shell Module vs Ansible Command Module
+ Module Command
Với module Command, thì các câu lệnh được truyền vào sẽ được thực thi không thông qua shell linux. Vì vậy một số thứ như biến môi trường $HOME sẽ không tồn tại, các tính năng chuyển hướng input/output ( < , > ) hay pipes ( | ) sẽ không hoạt động. Module Command an toàn hơn vì sẽ không ảnh hưởng đến môi trường của user thực thi.
Link tham khảo: http://docs.ansible.com/ansible/latest/modules/command_module.html
Cú pháp cơ bản
- name: return motd to registered var command: cat /etc/motd register: mymotd
+ Module Shell
Với module Shell, thì Ansible sẽ mở một shell linux trên máy chủ remote (mặc định là /bin/sh) . Sau đó câu lệnh tham số sẽ được thực thi trên shell remote. Vì vậy các tính năng như chuyển hướng input/output, pipe sẽ hoạt động được.
Link tham khảo: http://docs.ansible.com/ansible/latest/modules/shell_module.html
Cú pháp cơ bản
- name: Execute the command in remote shell shell: somescript.sh >> somelog.txt
Kết luận
Nếu bạn sử dụng các hoạt động trên OS Remote mà có thể sử dụng các module Ansible thay thế thì nên làm như vậy trước. Hạn chế việc sử dụng các lệnh thô truyền biến vào các module thực thi lệnh như ‘Command‘ hay ‘Shell‘. Trong trường hợp bạn cần phải xài 2 module trên, thì nếu bạn cần kết hợp xử lý câu lệnh với pipe hay ghi log thì hãy xài module ‘Shell‘ nhé.
Nguồn: https://cuongquach.com/