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配置华为交换机_networkmanager

最终效果展示:

ansible脚本:

基于ansible的交换机配置备份 ansible配置华为交换机_运维_02

运行效果:

基于ansible的交换机配置备份 ansible配置华为交换机_运维_03

适配过程

适配过程主要是在ansible的plugins模块中添加新的适配文件即可,文件格式可参考已有的文件内容。

这里以适配华为的vrp操作系统为例,由于我先前已经适配好了vrp,这里另外在适配一个vrp2以作演示。

在配置文件(/etc/ansible/ansible.cfg)中添加对应cliconf和terminal模块的路径,已保存自行适配的文件:

基于ansible的交换机配置备份 ansible配置华为交换机_ansible_04

可直接复制ansible默认支持的原有文件到新文件名称并修改部分内容即可,

基于ansible的交换机配置备份 ansible配置华为交换机_ansible_05

修改cliconf下的vrp2.py文件,将其操作系统名称修改为vrp2

基于ansible的交换机配置备份 ansible配置华为交换机_ansible_06

修改terminal下的vrp2.py文件,修改terminal_stdout_re内容,使其符合华为设备的回显格式

基于ansible的交换机配置备份 ansible配置华为交换机_基于ansible的交换机配置备份_07

基于ansible的交换机配置备份 ansible配置华为交换机_运维_08

修改on_open_shell函数中ios设备的取消分行命令为华为命令

基于ansible的交换机配置备份 ansible配置华为交换机_运维_09

其他地方根据需要自行修改即可,本次演示 开始编写ansible脚本,内容如下:

---
- hosts: devices
  vars:
    ansible_connection: network_cli
    ansible_ssh_user: huawei
    ansible_ssh_pass: "Josen@12345"
    ansible_network_os: vrp2
    ansible_become: no
  tasks:
    - name: hello 
      cli_command:
        command: "disp vers"
      register: run
    - name: debug
      debug:
        msg: "{{ run.stdout }}"

基于ansible的交换机配置备份 ansible配置华为交换机_ansible_10

编写inventory文件,内容如下:

[devices]
10.0.1.1
10.0.2.2
10.0.3.3

[devices:vars]
ansible_ssh_user: huawei
ansible_ssh_pass: Josen@12345

基于ansible的交换机配置备份 ansible配置华为交换机_网络设备_11

验证效果

运行ansible脚本

ansible-playbook -i hosts hello.yml

基于ansible的交换机配置备份 ansible配置华为交换机_networkmanager_12