Lệnh Ad-Hoc là lệnh ansible một dòng thực hiện một tác vụ trên máy chủ đích. Nó cho phép bạn thực hiện tác vụ một dòng đơn giản đối với một hoặc nhóm máy chủ được xác định trên cấu hình tệp kiểm kê. Lệnh Ad-Hoc sẽ chỉ có hai tham số, nhóm máy chủ mà bạn muốn thực hiện tác vụ và mô-đun Ansible để chạy.
Lệnh Ad-Hoc mang lại cho bạn nhiều lợi thế hơn để khám phá chính ansible. Bạn có thể thực hiện các tác vụ mà không cần tạo sổ tay hướng dẫn trước, chẳng hạn như khởi động lại máy chủ, quản lý dịch vụ, chỉnh sửa cấu hình dòng, sao chép tệp vào chỉ một máy chủ, chỉ cài đặt một gói.
Trong hướng dẫn này, tôi sẽ trình bày cách sử dụng cơ bản của lệnh Ansible Ad-Hoc. Tôi sẽ sử dụng lệnh Ad-Hoc để thực hiện các tác vụ đơn giản có thể cần thiết cho công việc hàng ngày của bạn với tư cách là quản trị viên hệ thống.
Một lệnh Ad-Hoc đối với máy chủ cung cấp đã 'THÀNH CÔNG' mà không có bất kỳ thay đổi nào được thực hiện trên máy chủ và chúng tôi nhận được kết quả của mô-đun 'ping' từ máy chủ cung cấp 'pong'.
Dưới đây là một ví dụ để chạy lệnh ad-hoc trên nhóm máy chủ có tên 'hakase-testing' đã được xác định trên tệp cấu hình kiểm kê mặc định.
Nếu bạn đang sử dụng tệp kiểm kê tùy chỉnh, hãy thêm tùy chọn '-i' theo sau tên tệp kiểm kê.
Bạn sẽ nhận được kết quả tương tự.
Bây giờ nếu bạn muốn chạy trên một máy chủ duy nhất trên cấu hình kiểm kê, bạn có thể sử dụng tên máy chủ như bên dưới.
Và lệnh ad-hoc sẽ chỉ chạy trên máy chủ 'provision'.
Cài đặt gói sshpass bằng lệnh apt bên dưới.
Bây giờ hãy chạy lệnh ad-hoc và thêm tùy chọn '--ask-pass' vào cuối.
Và bạn sẽ được yêu cầu nhập 'Mật khẩu SSH' cho máy chủ.
Nhập mật khẩu ssh của bạn và lệnh ad-hoc sẽ được chạy trên máy chủ.
Chạy lệnh ad-hoc 'fdisk -l' với tư cách là người dùng 'hakase' với tùy chọn đặc quyền '--become' và '-K' để nhắc nhập 'Mật khẩu SUDO'.
Dưới đây là kết quả.
Chạy lệnh ad-hoc bên dưới.
Bây giờ bạn sẽ được hỏi 'Mật khẩu SUDO' cho người dùng hakase. Nhập mật khẩu và bạn sẽ nhận được kết quả như bên dưới.
Tệp đã được tải lên thư mục đích 'dest' và bạn nhận được kết quả 'đã thay đổi' là 'true'.
Tải tệp cấu hình '/etc/sudoers.d/hakase' từ máy chủ 'provision' xuống thư mục cục bộ có tên là 'backup'.
Và bạn sẽ nhận được tệp có tên là 'hakase-sudoers' trên thư mục 'backup'.
Cập nhật kho lưu trữ trên nhóm hakase-testing.
Bây giờ hãy cập nhật kho lưu trữ và nâng cấp tất cả các gói lên phiên bản mới nhất bằng tùy chọn 'upgrade=dist'.
Đợi tất cả các gói được nâng cấp.
Bạn sẽ nhận được kết quả 'changed' và 'enabled' là 'true'.
Dịch vụ nginx đã được khởi động lại.
Dịch vụ nginx trên máy chủ 'hakase-testing' đã bị dừng.
Đầu tiên, cài đặt gói 'sysstat' cho tất cả các máy chủ bằng lệnh ad-hoc bên dưới.
Chờ cài đặt gói 'sysstat'.
Sau khi hoàn tất, bạn đã sẵn sàng kiểm tra tất cả các máy chủ.
Thay đổi '/dev/sda2' bằng đường dẫn của riêng bạn.
Và bạn sẽ thấy kết quả như bên dưới.
Lệnh mpstat là một phần của gói 'sysstat'.
Lệnh Ad-Hoc mang lại cho bạn nhiều lợi thế hơn để khám phá chính ansible. Bạn có thể thực hiện các tác vụ mà không cần tạo sổ tay hướng dẫn trước, chẳng hạn như khởi động lại máy chủ, quản lý dịch vụ, chỉnh sửa cấu hình dòng, sao chép tệp vào chỉ một máy chủ, chỉ cài đặt một gói.
Trong hướng dẫn này, tôi sẽ trình bày cách sử dụng cơ bản của lệnh Ansible Ad-Hoc. Tôi sẽ sử dụng lệnh Ad-Hoc để thực hiện các tác vụ đơn giản có thể cần thiết cho công việc hàng ngày của bạn với tư cách là quản trị viên hệ thống.
Điều kiện tiên quyết
Đối với hướng dẫn này, chúng tôi sẽ sử dụng hai máy chủ Ubuntu 18.04 LTS, Bionic Beaver. Máy chủ ansible sẽ lấy tên máy chủ 'ansible-node' với địa chỉ IP là 10.5.5.20 và máy chủ Provision với tên máy chủ 'provision' và địa chỉ IP là 10.5.5.21.Chúng ta sẽ làm gì?
- Lệnh Ad-Hoc cơ bản
- Truyền tệp
- Cập nhật và nâng cấp
- Quản lý gói
- Quản lý dịch vụ
- Kiểm tra hệ thống
Cách sử dụng lệnh Ad-Hoc cơ bản
Đầu tiên, chúng ta sẽ tìm hiểu cách sử dụng cơ bản của Ansible Ad-Hoc để quản lý máy chủ. Chúng ta sẽ tìm hiểu lệnh cơ bản Ansible Ad-Hoc, sử dụng lệnh Ad-Hoc với xác thực mật khẩu ssh, leo thang đặc quyền và sử dụng lệnh Ad-Hoc đối với một nhóm máy chủ.1. Lệnh cơ bản
Lệnh cơ bản của ansible ad-hoc đối với 'tất cả' máy chủ trên tệp kiểm kê và sử dụng mô-đun 'ping'.
Mã:
ansible all -m ping
- Tham số đầu tiên 'all' cho tất cả máy chủ trên tệp kiểm kê.
- Tham số thứ hai bên trong tùy chọn '-m' cho mô-đun, chạy mô-đun ping.
Một lệnh Ad-Hoc đối với máy chủ cung cấp đã 'THÀNH CÔNG' mà không có bất kỳ thay đổi nào được thực hiện trên máy chủ và chúng tôi nhận được kết quả của mô-đun 'ping' từ máy chủ cung cấp 'pong'.
2. Lọc nhóm máy chủ và máy chủ đơn
Bây giờ bạn có thể sử dụng lệnh Ad-Hoc đối với một nhóm máy chủ đã được xác định trên tệp kiểm kê. Bạn có thể sử dụng tệp kiểm kê tùy chỉnh hoặc sử dụng tệp kiểm kê mặc định '/etc/ansible/hosts'.Dưới đây là một ví dụ để chạy lệnh ad-hoc trên nhóm máy chủ có tên 'hakase-testing' đã được xác định trên tệp cấu hình kiểm kê mặc định.
Mã:
ansible hakase-testing -m setup -a "filter=ansible_distribution*"
Nếu bạn đang sử dụng tệp kiểm kê tùy chỉnh, hãy thêm tùy chọn '-i' theo sau tên tệp kiểm kê.
Mã:
ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"
Bây giờ nếu bạn muốn chạy trên một máy chủ duy nhất trên cấu hình kiểm kê, bạn có thể sử dụng tên máy chủ như bên dưới.
Mã:
ansible provision -m setup -a "filter=ansible_distribution*"
3. Sử dụng mật khẩu SSH
Bây giờ chúng ta sẽ thực hiện lệnh Ad-Hoc bằng cách sử dụng xác thực mật khẩu ssh được nhắc. Và để thực hiện điều này, bạn cần cài đặt gói bổ sung có tên là 'sshpass' trên 'ansible-node'.Cài đặt gói sshpass bằng lệnh apt bên dưới.
Mã:
sudo apt install sshpass -y
Mã:
ansible hakase-testing -m ping --ask-pass
Nhập mật khẩu ssh của bạn và lệnh ad-hoc sẽ được chạy trên máy chủ.
4. Tăng đặc quyền
Ansible cung cấp các tính năng để tăng đặc quyền trên các máy chủ. Nếu bạn muốn chạy lệnh ad-hoc với tư cách là người dùng không phải root, bạn có thể sử dụng tùy chọn '--become' để có được quyền root và tùy chọn '-K' để nhắc nhập mật khẩu.Chạy lệnh ad-hoc 'fdisk -l' với tư cách là người dùng 'hakase' với tùy chọn đặc quyền '--become' và '-K' để nhắc nhập 'Mật khẩu SUDO'.
Mã:
ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K
Truyền tệp
Bây giờ chúng ta sẽ sử dụng lệnh Ad-Hoc để Chuyển tệp đến và đi từ máy chủ. Chúng ta có thể chuyển tệp đến máy chủ cung cấp bằng mô-đun 'sao chép' và tải tệp xuống từ máy chủ bằng mô-đun 'fetch'.1. Tải tệp lên máy chủ
Trong ví dụ này, chúng ta sẽ chạy lệnh ad-hoc và sử dụng mô-đun 'copy' để tải cấu hình sudoers cho người dùng hakase lên thư mục '/etc/sudoers.d' trên nhóm 'hakase-testing'.Chạy lệnh ad-hoc bên dưới.
Mã:
ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K
Tệp đã được tải lên thư mục đích 'dest' và bạn nhận được kết quả 'đã thay đổi' là 'true'.
2. Tải tệp từ máy chủ
Bây giờ chúng ta sẽ sử dụng lệnh ad-hoc với mô-đun 'fetch' để tải tệp từ máy chủ cung cấp xuống máy chủ 'ansible-node' cục bộ.Tải tệp cấu hình '/etc/sudoers.d/hakase' từ máy chủ 'provision' xuống thư mục cục bộ có tên là 'backup'.
Mã:
ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'
Bước 3 - Cập nhật kho lưu trữ và nâng cấp các gói
Để cập nhật và nâng cấp kho lưu trữ của máy chủ Ubuntu, chúng ta có thể sử dụng lệnh ad-hoc với mô-đun apt.Cập nhật kho lưu trữ trên nhóm hakase-testing.
Mã:
ansible hakase-testing -m apt -a 'update_cache=yes' --become
Mã:
ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become
Quản lý các gói
Điều này rất hữu ích khi bạn đang cố gắng xây dựng và gỡ lỗi sổ tay hướng dẫn của riêng mình. Bởi vì đôi khi bạn cần cài đặt một gói bổ sung trên hệ thống. Vì vậy, lệnh ad-hoc này sẽ cung cấp cho bạn một cách dễ dàng để cài đặt gói đó mà không cần đăng nhập vào từng máy chủ.1. Cài đặt gói
Cài đặt một gói duy nhất bằng lệnh ad-hoc với mô-đun apt như bên dưới.
Mã:
ansible hakase-testing -m apt -a 'name=nginx state=latest' --become
2. Xóa gói
Xóa gói và xóa tất cả cấu hình liên quan đến gói.
Mã:
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become
3. Tự động xóa
Ví dụ bên dưới đang xóa gói nginx và xóa tất cả các cấu hình liên quan, sau đó xóa tất cả các gói không sử dụng trên hệ thống.
Mã:
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become
Quản lý dịch vụ
Trong bước này, chúng ta sẽ sử dụng mô-đun dịch vụ trên lệnh ad-hoc để quản lý dịch vụ hệ thống trên máy chủ cung cấp.1. Khởi động dịch vụ
Khởi động dịch vụ nginx và thêm nó vào thời gian khởi động.
Mã:
ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become
2. Khởi động lại dịch vụ
Nếu bạn muốn khởi động lại dịch vụ, bạn có thể sử dụng lệnh sau.
Mã:
ansible hakase-testing -m service -a 'name=nginx state=restarted' --become
3. Dừng dịch vụ
Để dừng dịch vụ, hãy thay đổi giá trị 'state' thành 'stopped'.
Mã:
ansible hakase-testing -m service -a 'name=nginx state=stopped' --become
Kiểm tra hệ thống
Bây giờ chúng ta sẽ sử dụng mô-đun 'shell' bên trong lệnh ad-hoc. Và chúng ta sẽ thực hiện giám sát hệ thống đơn giản bằng lệnh Linux đơn giản thông qua Ansible ad-hoc.Đầu tiên, cài đặt gói 'sysstat' cho tất cả các máy chủ bằng lệnh ad-hoc bên dưới.
Mã:
ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become
Sau khi hoàn tất, bạn đã sẵn sàng kiểm tra tất cả các máy chủ.
1. Đĩa khả dụng
Kiểm tra đĩa khả dụng trên phân vùng gốc bằng lệnh fdisk.
Mã:
ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become
2. Sử dụng bộ nhớ RAM
Bây giờ hãy kiểm tra mức sử dụng bộ nhớ RAM trên tất cả các máy chủ bằng lệnh 'free -m'.
Mã:
ansible hakase-testing -m shell -a 'free -m' --become
3. Sử dụng CPU
Kiểm tra mức sử dụng CPU của tất cả các máy chủ bằng lệnh mpstat.
Mã:
ansible hakase-testing -m shell -a 'mpstat -P ALL' --become
4. Cổng mở
Kiểm tra các cổng mở trên tất cả các hệ thống bằng lệnh netstat thông qua lệnh ad-hoc.
Mã:
ansible hakase-testing -m shell -a 'netstat -plntu' --become
5. Thời gian hoạt động
Bây giờ hãy kiểm tra thời gian hoạt động của từng máy chủ.
Mã:
ansible hakase-testing -m shell -a 'uptime' --become