networking - 编写剧本,访问主机文件中存在的网络设备并检查设备的主机操作系统(nexus/cisco/arista)
问题描述
我正在编写一个剧本,它在主机文件的提示符下动态输入用户提供的网络服务器。此外,我想创建一个任务,该任务将在服务器上逐个 ssh 并运行 show version 命令来获取这些网络设备的操作系统. 截至目前,我收到以下错误:
1.“无法自动确定主机网络操作系统。请手动为此主机配置ansible_network_os值”
我不想事先定义操作系统,而是希望剧本来做。
我尝试在主机文件中输入一些配置,如下所示:
[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 并获取操作系统详细信息:--- - name: add host dynamic hosts: localhost gather_facts: no vars: Server: 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 命令向我显示在主机文件中输入的网络设备的操作系统。
解决方案
推荐阅读
- c# - WPF树视图项目可见性绑定到属性+静态变量
- neo4j - 在地图中绘制 R-tree
- active-directory - openLDAP:使用 userPrincipalName 登录
- javascript - 使用条件隐藏jQuery中的附加按钮
- c# - 在 C#.NET 中使用特定模式修剪字符串值
- python-2.7 - 具有不同大小的数组乘法
- vba - 如果在“GetSaveAsFileName”中单击取消按钮,如何结束函数 - VBA 中的对话框
- c# - 显示两个日期时间选择器之间的数据,“条件表达式中的数据类型不匹配”
- db2 - 在 SQLCODE=-181, SQLSTATE=22007, SQLERRMC=0;*N, DRIVER=3.61.75 的 DB2 Sql 错误中面临问题
- android - 实时 admob 广告未在我的设备上显示