ansible国产设备适配前言适配过程验证效果前言ansible是美国redhat公司研发的一款开源的自动化运维工具可以非常高效且可靠的实现对被控制端服务器、网络设备等被控制节点进行运维工作。然而也同样由于此其对国产设备表现出来的友好性并不是那么足够庆幸的是ansible预留了对其他设备的适配接口可以通过这些接口是ansible能够支持原本并不支持的设备。默认情况下ansible底层使用ssh对网络设备进行操作控制在某些情况下还可以通过配置的方式使ansible采用其他的协议例如 telnet控制被控制端。本博文主要通过华为路由器的例子讲解ansible的国产设备的适配过程。由于篇幅有限有些地方可能无法完全讲解透彻有瑕疵之处欢迎指正有不解之处欢迎提出。网络设备厂商华为设备需要开通ssh权限开通方法可参考我的另外一篇博客《配置华为设备ssh登录实现网络设备与VMWare虚拟机信息交互》ansible版本2.8.1 截至本博客编辑ansible最新版本已经迭代到4版本考虑到编者对2.8.1的熟悉程度较高本博文依然以2.8.1版本进行演示其他版本可另行尝试。关于ansible指定版本安装可参考我的另外一篇博客《CentOS安装指定版本ansible》。控制端CentOS 7.6网络设备拓扑如下图所示最终效果展示ansible脚本运行效果适配过程适配过程主要是在ansible的plugins模块中添加新的适配文件即可文件格式可参考已有的文件内容。这里以适配华为的vrp操作系统为例由于我先前已经适配好了vrp这里另外在适配一个vrp2以作演示。在配置文件/etc/ansible/ansible.cfg中添加对应cliconf和terminal模块的路径已保存自行适配的文件可直接复制ansible默认支持的原有文件到新文件名称并修改部分内容即可修改cliconf下的vrp2.py文件将其操作系统名称修改为vrp2修改terminal下的vrp2.py文件修改terminal_stdout_re内容使其符合华为设备的回显格式修改on_open_shell函数中ios设备的取消分行命令为华为命令其他地方根据需要自行修改即可本次演示开始编写ansible脚本内容如下----hosts:devicesvars:ansible_connection:network_cliansible_ssh_user:huaweiansible_ssh_pass:Josen12345ansible_network_os:vrp2ansible_become:notasks:-name:hellocli_command:command:disp versregister:run-name:debugdebug:msg:{{ run.stdout }}编写inventory文件内容如下[devices]10.0.1.1 10.0.2.2 10.0.3.3[devices:vars]ansible_ssh_user:huaweiansible_ssh_pass:Josen12345验证效果运行ansible脚本ansible-playbook-ihosts hello.yml