Networking 编写剧本,访问主机文件中的网络设备,并检查设备的主机操作系统(nexus/cisco/arista)

Networking 编写剧本,访问主机文件中的网络设备,并检查设备的主机操作系统(nexus/cisco/arista),networking,ansible,Networking,Ansible,我正在编写一个playbook,它在主机文件的提示下动态地进入用户提供的网络服务器。此外,我想创建一个任务,该任务将在服务器上逐个ssh并运行show version命令来获取这些网络设备的操作系统。 到目前为止,我得到以下错误: 1.“无法自动确定主机网络操作系统。请手动为此主机配置ansible_network_操作系统值” 我不想事先定义操作系统,而是希望剧本能做到这一点 我尝试在主机文件中输入一些配置,如下所示: [device] 192.1xx.xxx.xx [all:vars] a

我正在编写一个playbook,它在主机文件的提示下动态地进入用户提供的网络服务器。此外,我想创建一个任务,该任务将在服务器上逐个ssh并运行show version命令来获取这些网络设备的操作系统。 到目前为止,我得到以下错误:

1.“无法自动确定主机网络操作系统。请手动为此主机配置ansible_network_操作系统值”

我不想事先定义操作系统,而是希望剧本能做到这一点

我尝试在主机文件中输入一些配置,如下所示:

[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命令,实际结果应显示在主机文件中输入的网络设备的操作系统