Ansible: Hướng dẫn sử dụng lệnh Ansible Ad-Hoc | Trong nội dung bài viết này chúng ta sẽ tìm hiểu về khái niệm cơ bản và đơn giản mà bạn sẽ tiếp cận Ansible. Đó chính là thực thi lệnh Ansible Ad-hoc. Vậy Ansible Ad-hoc theo khái niệm do Ansible miêu tả là gì? Có gì đặc biệt hay không ? chúng ta hãy cùng tìm hiểu ở bài viết này.
Contents
Lệnh Ad-hoc là gì ?
Một lệnh Ad-hoc được miêu tả như một lệnh mà bạn có thể gõ nhanh để thực thi các nội dung task (tác vụ) việc cần thiết mà không cần lưu trữ lại thông tin lệnh sử dụng cho task việc đó.
Lệnh Ansible Ad-hoc là gì ?
Đôi khi bạn không muốn phải tạo 1 file playbook hoàn chỉnh bao gồm các tác vụ cần thực hiện. Thay vào đó bạn muốn thực hiện nhanh chóng 1 vài yêu cầu nho nhỏ ngay trên chương trình lệnh tại Ansible Server như: kiểm tra thông tin ip, kiểm tra thông tin disk usage,.. Thì lúc này ta đơn thuần sẽ chỉ sử dụng câu lệnh “ansible” và các option liên quan để thực thi trên các máy chủ remote. Vậy quá trình sử dụng lệnh ‘ansible’ trên terminal để thực thi nhanh 1 tác vụ mà ta muốn trên máy chủ remote, ta gọi đó là lệnh ‘Ansible Ad-hoc’. Đây cũng chính là kiến thức bạn thường tiếp cận Ansible đầu tiên.
Ở đây khi thực hành các ví dụ dưới, mình coi như bạn đã cài đặt ssh key cho máy chủ remote rồi nhé. Để khi Ansible ssh sẽ ssh bằng key , không hỏi mật khẩu.
Cú pháp lệnh Ansible Ad-hoc
Cú pháp
# ansible [-i /path/inventory-file] [pattern-host] [-m module] [-a arguments]
- <pattern> : chỉ định thông tin host máy chủ remote.
- <module> : chỉ định module sử dụng.
- <arguments> : truyền tham số module.
Lưu ý:
– Module mặc định là ‘command’ (trong trường hợp nếu bạn không chỉ định rõ module khi sử dụng adhoc ansible command) và khi bạn truyền tham số là xem như câu lệnh sẽ được sử dụng để thực thi trên máy chủ remote. Ví dụ: # ansible webservers -a “free -m”
– Khi sử dụng lệnh Ansible adhoc thì bạn cần dùng dấu quote “…“ để rào tham số truyền vào module lệnh.
Lưu ý về file host inventory mặc định
Nếu bạn khai báo thông tin host inventory trong file mặc định /etc/ansible/hosts thì khi thực thi lệnh ad-hoc ansible không cần phải chỉ định rõ file thông tin inventory.
Ví dụ:
# cat /etc/ansible/hosts server1 ansible_host=127.0.0.1 ansible_port=3022 server2 ansible_host=127.0.0.1 ansible_port=4022 [webservers] server1 server2
thì khi thực thi lệnh adhoc ansible, ansible sẽ tự biết tìm thông tin nhóm host ‘webservers‘ tại file ‘/etc/ansible/hosts‘.
# ansible webservers -a “free -m” server1 | SUCCESS | rc=0 >> total used free shared buff/cache available Mem: 5804 318 5083 65 402 5087 Swap: 2047 0 2047 server2 | SUCCESS | rc=0 >> total used free shared buff/cache available Mem: 7821 348 6744 409 728 6779 Swap: 2047 0 2047
Lưu ý về file host inventory tuỳ chỉnh
Nếu bạn khai báo thông tin inventory host ở thư mục khác như : /opt/hosts_inventory , thì cần dùng option ‘-i’ để chỉ định file inventory.
# ansible -i /opt/hosts_inventory webservers -a “free -m”
Các ví dụ sử dụng lệnh Ansible Ad-hoc
1. Reboot lại máy chủ remote
– Bạn muốn restart các server nằm trong group “[webservers]” .
# ansible webservers -a “reboot -f”
2. Tạo 1 thư mục trên máy chủ remote
– Ta sẽ sử dụng module ‘file‘ để thực hiện thao tác tạo thư mục với câu lệnh như dưới đây.
# ansible webservers -m file -a “dest=/tmp/test/ansible/create-dir mode=644 owner=ansible group=ansible state=directory”
3. Check ping các máy chủ remote
– Ta dùng module ‘ping’ để check từ máy chủ ansible có ping được các máy chủ remote không.
# ansible webservers -m ping server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" }
4. Quản lý dịch vụ
– Ta dùng module ‘service’ để quản lý dịch vụ.
# ansible webservers -m service -a “name=httpd state=restarted”
5. Chạy quyền user sudo trên remote server
– Thông thường sẽ có trường hợp, máy chủ remote sử dụng các user với quyền sudo để thực thi tác vụ. Lúc này, bạn sẽ sử dụng option ‘-u user‘ và ‘–become‘ để leo quyền sudo. Option ‘–ask-become-pass‘ phục vụ cho việc xuất thông báo nhập mật khẩu quyền sudo của máy chủ remote.
# ansible webservers -a "/sbin/reboot" -u differentuserhere --become --ask-become-pass
6. Module shell
– Nếu bạn muốn sử dụng pipe hoặc redirect output của lệnh trên ansible ad-hoc thì cần sử dụng module ‘shell’ để thực thi. Nếu bạn có sử dụng biến trong lúc truyền tham số cho Ansible adhoc lệnh thì thêm dấu ‘\$’ .
# ansible webservers -m shell -a “ps aux | grep http | awk '{print \$2}’" server1 | SUCCESS | rc=0 >> apache 4357 apache 4358 apache 4359 apache 4360 apache 4361 apache 4469 ansible 4817 ansible 4819 root 29479 server2 | SUCCESS | rc=0 >> root 16011 apache 16405 apache 16406 apache 16407 apache 16408 apache 16409 ansible 31772 ansible 31774
Như vậy bạn đã tìm hiểu cách thức sử dụng lệnh Ansible ad-hoc cơ bản rồi phải không nào . Có rất nhiều cách để ứng dụng hoạt động sử dụng lệnh ansible cơ bản này nhằm trích xuất các thông tin của máy chủ remote một cách nhanh chóng. Chúc các bạn thành công
Nguồn: https://cuongquach.com/