Điểm:1

Ansible Ad-Hoc command - raw module not working on Cisco IOS devices

lá cờ us

trying to use Ad Hoc commands on both my Cisco ios Router and Switch with the -m raw Module. But getting the following error instead.

$ansible -i inventory_file02.ini netgrp -m raw -a "show version" -u abdo -K

Error====

BECOME password: 
R1 | FAILED | rc=127 >>
/bin/sh: 1: show: not found
non-zero return code
SW1 | FAILED | rc=127 >>
/bin/sh: 1: show: not found
non-zero return code

Inventory file=====

R1 ansible_host=192.168.20.1
SW1 ansible_host=192.168.10.2

[netgrp]
R1
SW1

group_vars/netgrp.yml===

---
ansible_connection: network_cli
ansible_network_os: ios
ansible_user: abdo
absible_password: kali/abdo
ansible_become: yes
ansible_become_method: enable
ansible_ssh_pass: kali/abdo

$ ansible -i inventory_file02.ini netgrp -m raw -a "show version" -u abdo -kK -vvv

ansible [core 2.12.6]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/kali/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.10/dist-packages/ansible
  ansible collection location = /home/kali/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.4 (main, Mar 24 2022, 13:07:27) [GCC 11.2.0]
  jinja version = 3.0.3
  libyaml = True
Using /etc/ansible/ansible.cfg as config file
SSH password: 
BECOME password[defaults to SSH password]: 
host_list declined parsing /home/kali/ansible_play01/net_play02/inventory_file02.ini as it did not pass its verify_file() method                                                                                                        
script declined parsing /home/kali/ansible_play01/net_play02/inventory_file02.ini as it did not pass its verify_file() method                                                                                                           
auto declined parsing /home/kali/ansible_play01/net_play02/inventory_file02.ini as it did not pass its verify_file() method                                                                                                             
yaml declined parsing /home/kali/ansible_play01/net_play02/inventory_file02.ini as it did not pass its verify_file() method                                                                                                             
Parsed /home/kali/ansible_play01/net_play02/inventory_file02.ini inventory source with ini plugin
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.
META: ran handlers
redirecting (type: connection) ansible.builtin.network_cli to ansible.netcommon.network_cli
redirecting (type: connection) ansible.builtin.network_cli to ansible.netcommon.network_cli
redirecting (type: terminal) ansible.builtin.ios to cisco.ios.ios
redirecting (type: cliconf) ansible.builtin.ios to cisco.ios.ios
redirecting (type: terminal) ansible.builtin.ios to cisco.ios.ios
redirecting (type: become) ansible.builtin.enable to ansible.netcommon.enable
redirecting (type: cliconf) ansible.builtin.ios to cisco.ios.ios
redirecting (type: become) ansible.builtin.enable to ansible.netcommon.enable
<192.168.10.2> ESTABLISH LOCAL CONNECTION FOR USER: kali
<192.168.10.2> EXEC show version
<192.168.20.1> ESTABLISH LOCAL CONNECTION FOR USER: kali
<192.168.20.1> EXEC show version
SW1 | FAILED | rc=127 >>
/bin/sh: 1: show: not found
non-zero return code
R1 | FAILED | rc=127 >>
/bin/sh: 1: show: not found
non-zero return code
Điểm:0
lá cờ cn

THIẾT LẬP KẾT NỐI ĐỊA PHƯƠNG không phải là thông báo -vvv mà tôi mong đợi, plugin kết nối cục bộ chỉ thực thi các lệnh trên máy chủ cục bộ. Lưu ý Shell /bin/sh, không phải thứ được tìm thấy trên iOS. Đối với network_cli, tôi mong đợi ĐỊA PHƯƠNG thay vào đó là PARAMIKO hoặc LIBSSH. (Nhiều năm trước, các thiết bị mạng đã sử dụng plugin kết nối cục bộ cộng với các tham số mô-đun, nhưng điều này đã lỗi thời từ lâu bởi các plugin kết nối thực tế.)

Hướng dẫn khắc phục sự cố mạng cho thấy nó có thể chỉ là THIẾT LẬP KẾT NỐI. Nhưng điều đó có thể đã lỗi thời; plugin kết nối hiện đại theo quy ước bao gồm tên của họ.

Vì vậy, các biến kết nối của bạn phù hợp với cách cấu hình kết nối với IOS, nhưng chúng có thể không được áp dụng chính xác. Mà bạn đặt trong group_vars, đó là một lựa chọn tốt. Tuy nhiên, tôi nghĩ việc xác định máy chủ R1SW1 hai lần là gây ra vấn đề.

Giữ khoảng không quảng cáo định dạng ini của bạn, xóa các máy chủ bên ngoài nhóm nhưng giữ các biến máy chủ:

[netgrp]
R1 ansible_host=192.168.20.1
SW1 ansible_host=192.168.10.2

Vars có thể được định nghĩa ở hầu hết mọi nơi. Hãy thử xác định những điều này ở những nơi khác, để xem điều gì hiệu quả và điều gì cảm thấy tự nhiên. Ví dụ, có cú pháp để xác định vars cấp nhóm trong kho có thể thay thế việc bạn sử dụng group_vars để biết chi tiết kết nối.

[netgrp:vars]
ansible_connection=mạng_cli
ansible_network_os=ios
ansible_user=abdo
ansible_become_method=bật

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.