Ansible: Hướng dẫn sử dụng lệnh Ansible Ad-hoc cơ bản

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.

lệnh ansible adhoc

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/

Previous articleEbook CCNA Cơ Bản PDF – BachKhoa Aptech
Next articleHướng dẫn cài đặt giao diện đồ họa GNOME GUI cho CentOS 7
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !