Networking 编写剧本,访问主机文件中的网络设备,并检查设备的主机操作系统(nexus/cisco/arista)
我正在编写一个playbook,它在主机文件的提示下动态地进入用户提供的网络服务器。此外,我想创建一个任务,该任务将在服务器上逐个ssh并运行show version命令来获取这些网络设备的操作系统。 到目前为止,我得到以下错误: 1.“无法自动确定主机网络操作系统。请手动为此主机配置ansible_network_操作系统值” 我不想事先定义操作系统,而是希望剧本能做到这一点 我尝试在主机文件中输入一些配置,如下所示:Networking 编写剧本,访问主机文件中的网络设备,并检查设备的主机操作系统(nexus/cisco/arista),networking,ansible,Networking,Ansible,我正在编写一个playbook,它在主机文件的提示下动态地进入用户提供的网络服务器。此外,我想创建一个任务,该任务将在服务器上逐个ssh并运行show version命令来获取这些网络设备的操作系统。 到目前为止,我得到以下错误: 1.“无法自动确定主机网络操作系统。请手动为此主机配置ansible_network_操作系统值” 我不想事先定义操作系统,而是希望剧本能做到这一点 我尝试在主机文件中输入一些配置,如下所示: [device] 192.1xx.xxx.xx [all:vars] a
[device]
192.1xx.xxx.xx
[all:vars]
ansible_connection=network_cli
ansible_user=user
ansible_ssh_pass=password
ssh_args = -o GSSAPIAuthentication=no
下面的plsybook从用户处获取设备名称并将其添加到文件中,它还需要在这些服务器上使用ssh并获取操作系统详细信息:
---
-名称:动态添加主机
主机:本地主机
收集事实:不
变量:
服务器:null_val1
vars_prompt:
- name: "Server"
prompt: "Please enter the non-reporting server/IP"
private: no
default: null_val1
pre_tasks:
- name: Save variable
set_fact:
Server: "{{Server}}"
- name: Copying servers to host file
hosts: localhost
become: true
tasks:
- name: copying variable value
lineinfile:
path: "{{playbook_dir}}/hosts.txt"
line: "{{Server}}"
insertafter: '^\[device\]'
state: present
- name: Main execution task
hosts: device
gather_facts: true
tasks:
- name: Run command on devices
cli_command:
command: show version
register: result
- name: display result
debug:
var: result.stdout_lines
通过远程运行show version命令,实际结果应显示在主机文件中输入的网络设备的操作系统