经过前面几次测试,我们已经成功部署了ODL(OpenDaylight)服务器(低成本玩转SDN:实测OpenDaylight资源消耗仅1.1GB,完美纳管华为设备,开源方案真香!),也成功测试了使用NETCONF推送一些基础配置(告别CLI:手把手教你用ODL的RESTCONF接口管理设备,增删改查只需一条curl命令)。
但是,理想很丰满,现实很骨感。后来我发现,仅靠这些还无法实现完整的SDN配置推送。至于原因吗,华为除了基础的设备网络配置用的是公共的标准ODL YANG,高级一点的配置,像OSPFv2、OSPFv3、IS-IS,就连保存配置都是用的私有YANG模型,与ODL原生功能存在YANG模型冲突的兼容性问题,导致高级配置无法通过RESTCONF接口直接下发。
解决办法也不是没有,那就是升级为华为开发者,申请相关的API文档权限,不过这个估计需要比较长的时间。
等待期间,我们就换个方案曲线救国吧。尝试绕过ODL,利用Linux标准工具expect,依旧将ODL服务器作为控制节点,对于不支持的YANG模型,通过SSH批量并发地将配置推送到所有设备。
首先,我们需要确认下发配置的账号有相关权限。此前,我们配置的账号odluser只有snetconf权限,需要确认其可以通过SSH登录设备并下发配置,完整配置如下。