首页 > 解决方案 > 编写剧本,访问主机文件中存在的网络设备并检查设备的主机操作系统(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 命令向我显示在主机文件中输入的网络设备的操作系统。

标签: networkingansible

解决方案


推荐阅读