Hướng dẫn sử dụng lệnh Ansible Ad-hoc cơ bản
Các hướng dẫn trong bài viết sau đây sẽ giúp bạn bắt đầu qúa trình Tự động hóa với Ansible. Cụ thể, ở đây chúng ta sẽ thảo luận về các lệnh Ansible Ad-Hoc. Trong bài viết này Bizfly Cloud đề cập đến một số lệnh hữu ích giúp bạn bắt đầu với các lệnh Ad-Hoc ansible để thực hành với Ansible.
1. Lệnh Ad-hoc là gì ?
Lệnh Ad-Hoc ansible cho phép bạn có thể nhập vào để thực hiện tác vụ thật nhanh mà không muốn lưu lại sau này.
Đó cũng là khởi đầu để bắt đầu hiểu những điều cơ bản về những gì Ansible có thể làm trước khi học ngôn ngữ playbook - các lệnh ad-hoc cũng có thể được sử dụng cho các công việc cần thực hiện nhanh chóng và bạn có thể không nhất thiết muốn viết một playbook đầy đủ.
Chúng ta sẽ bắt đầu với các cú pháp chính xác để chạy các lệnh Ansible Ad-Hoc.
Gọi một lệnh shell:
-a "$command"
Gọi với quyền sudo:
–sudo
Kiểm tra nếu máy có phản ứng:
-m ping
Gọi một module tùy ý
-m $module -a "$argument"
Thu thập thông tin cụ thể:
-m setup -a "filter=*distri*"
Trước khi thực hiện các lệnh Ad-Hoc, một điều rất quan trọng là bạn phải biết về các mẫu Ansible để giúp bạn biết nơi sẽ chạy các lệnh Ansible-Hoc.
Mẫu: Bạn có thể sử dụng mẫu Ansible để chọn tập hợp host / group cụ thể.
Bạn có thể sử dụng lệnh ansible help để hiểu cú pháp lệnh Ad-Hoc và hơn thế nữa.
1 | [ansadm@ansible-master ~]$ ansible --help |
(hoặc)
1 | [ansadm@ansible-master ~]$ /usr/bin/ansible --help |
Lệnh này sẽ liệt kê tất cả các host được cấu hình trong tệp Static Inventory (/ ete / ansible / hosts)
1 | [ansadm@ansible-master ~]$ ansible --list-hosts all |
(hoặc)
Bạn cũng có thể sử dụng ký tự đại diện (*) để thu thập thông tin tương tự
1 | [ansadm@ansible-master ~]$ ansible --list-hosts "*" |
Nếu bạn muốn kiểm tra các host quan trọng trong một trong các nhóm của bạn
1 | [ansadm@ansible-master ~]$ ansible --list-hosts |
Lệnh này sẽ cung cấp cho bạn output khớp hostname với "vagrant"
1 | [ansadm@ansible-master ~]$ ansible --list-hosts "vagrant*" |
Lệnh Ad-Hoc ansible:
Chạy lệnh Ansible đầu tiên trên giao diện dòng lệnh Ansible server của bạn.
Lệnh dưới đây sẽ kiểm tra "uptime" trong một nhóm gọi là "all".
1 | [ansadm@ansible-master ~]$ ansible all -i ./hosts -m command -a "uptime" |
Giải thích về lệnh trên:
ansible: Ansible là lệnh để thực thi các lệnh Ad-Hoc trên môi trường Shell.
all: Đây là một Group / hostname mà bạn muốn thực hiện các lệnh.
-i: INVENTORY, –inventory-file = INVENTORY. chỉ định đường dẫn inventory path (mặc định = / etc / ansible / hosts) hoặc danh sách máy chủ được phân tách bằng dấu phẩy.
hoặc danh sách máy chủ được phân tách bằng dấu phẩy.
-m: Tên module - Bạn muốn thực hiện trên các máy chủ từ xa.
command: Module command sẽ thực thi Lệnh trên các server Từ xa.
Nó sẽ không hỗ trợ thực hiện các tác vụ phụ như lọc chuỗi từ output của lệnh. Kiểm tra trang Manual ([ansadm @ ansible-master ~] $ ansible-doc command) để biết thêm thông tin.
-a: MODULE_ARGS, –args = MODULE_ARGS- đối số module.
"Uptime": Đây là một lệnh Unix để có được các chi tiết uptime của máy chủ.
Một số thủ thuật nhanh về Module ansible và lệnh Adhoc.
Kiểm tra khả năng hiển thị của tất cả các hệ thống đích
5 6 7 8 9 10 | [ansadm@ansible-master ~]$ ansible all –m ping ansible-client3 | SUCCESS => { "changed": false, "ping": "pong" } ansible-client2 | SUCCESS => { "changed": false, "ping": "pong" } |
Kiểm tra thông tin chi tiết về các máy mục tiêu
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | [ansadm@ansible-master ~]$ ansible –m setup all ## Output ## ansible-client3 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "192.168.122.1", "192.168.1.64", "192.168.1.63", "192.168.131.146", "192.168.131.141" ], "ansible_all_ipv6_addresses": [ "fe80::20c:29ff:fee0:f236", "fe80::20c:29ff:fee0:f22c", "fe80::20c:29ff:fee0:f222" ], "ansible_apparmor": { "status": "disabled" }, "ansible_architecture": "x86_64", "ansible_bios_date": "07/02/2015", "ansible_bios_version": "6.00", "ansible_cmdline": { "BOOT_IMAGE": "/vmlinuz-3.10.0-327.el7.x86_64", "LANG": "en_US.UTF-8", "crashkernel": "auto", "quiet": true, "rd.lvm.lv": "centos/swap", "rhgb": true, "ro": true, "root": "/dev/mapper/centos-root" }, "ansible_date_time": { "date": "2017-09-29", "day": "29", "epoch": "1506668281", "hour": "12", "iso8601": "2017-09-29T06:58:01Z", "iso8601_basic": "20170929T122801003846", "iso8601_basic_short": "20170929T122801", "iso8601_micro": "2017-09-29T06:58:01.003930Z", "minute": "28", "month": "09", "second": "01", "time": "12:28:01", "tz": "IST", |
Thực hiện các lệnh ad-hoc trên các máy mục tiêu
1 | [ansadm@ansible-master ~]$ ansible -m shell -a "uname -a" all -s |
-s có nghĩa là lệnh sẽ được thực thi với quyền sudo trên máy chủ từ xa.
Liệt kê các máy chủ trên đó lệnh sẽ được thực hiện
3 4 5 6 7 8 9 10 11 | [ansadm@ansible-master ~]$ ansible -m shell -a "uname -a" all --list-hosts hosts (8): devdb2 ansible-client2 ansible-client3 ansible-client1 lb1 web1 web2 uatdb1 [ansadm@ansible-master ~]$ |
Sao chép tệp từ máy chủ Ansible để nhắm mục tiêu máy bằng module sao chép
[ansadm@ansible-master ~]$ touch /tmp/testfile
[ansadm@ansible-master ~]$ ansible -m copy -a "src=/tmp/testfile dest=/tmp/testfiletarget mode=700" all
## Output ##
ansible-client3 | SUCCESS => {
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/tmp/testfiletarget mode=700",
"gid": 1002,
"group": "ansadm",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"mode": "0664",
"owner": "ansadm",
"secontext": "unconfined_u:object_r:user_tmp_t:s0",
"size": 0,
"src": "/home/ansadm/.ansible/tmp/ansible-tmp-1506668688.23-254133288222074/source",
"state": "file",
"uid": 1002
Sau đây là những gì Ansible đang làm trong backgroud
1 | [ansadm@ansible-master ~]$ ansible -m shell -a "uname -a" all -vvv |
- vvv là verbose
Theo VCCloud
>> Xem thêm: Các mẹo giúp tăng tốc độ thực thi của Ansible