实现Cisco Zero Touch Provisioning的前提是,网络设备提供了运行Python脚本的环境-Guest Shell,可以执行下载的Python脚本,并将对设备进行配置。
Cisco NX-OS提供了强大的网络可编程性和自动化功能,其中的通电自动调配 POAP就比较典型,非常适用于IDC数据中心在实施阶段的自动化操作,省去了大量的人力介入,提高了网络扩展和部署的效率。
官方参考:
POAP - Open NX-OS - Document - Cisco DevNet
POAP是通过DHCP&TFTP以及其他文件传输服务,对NX-OS设备在加电启动时,自动进行网络安装配置的。
Cisco官方提供了一个现成的python脚本,用以实现POAP过程。
POAP测试
一、DHCP&TFTP环境搭建
使用Dnsmasq,可以同时提供DHCP&TFTP&SCP服务
在Linux环境下搭建
- 系统环境
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
- 安装
apt-get install dnsmasq
- 配置
编辑/etc/dnsmasq.conf配置文件
log-facility=/var/log/dnsmasq/dnsmasq.log # 定义dnsmasq日志文件
interface=pnet0 # 与网络设备互联接口处于同一个二层网络
bind-interfaces
enable-tftp
enable-tftp=pnet0 # 与网络设备互联接口处于同一个二层网络
tftp-root=/var/lib/tftpboot # tftp主目录,跟poap脚本中定义的一至
dhcp-host=10.x.x.x
dhcp-range=10.x.x.1,10.x.x.2,255.255.255.0,1h # 指定地址池及租约
dhcp-option=150,10.x.x.x # 指定tftp server地址
dhcp-option=3,10.x.x.x # 指定路由
dhcp-option=67,poap.py # 指定bootfile
dhcp-boot=10.x.x.x/poap.py # 指定bootfile下载路径
log-dhcp # 启用dhcp log
- Dnsmasq日志
tail -f /var/log/dnsmasq/dnsmasq.log
二、脚本下载
git clone https://github.com/datacenter/nexus9000.git
- 脚本
~/nexus9000/nx-os/poap$ ls -l
-rwxr-xr-x 1 jay jay 1575 Apr 28 15:29 personality_poap.py
-rwxr-xr-x 1 jay jay 104200 Apr 28 15:29 poap.py
三、脚本配置
-
下载的poap.py放到TFTP服务器的主目录下/var/lib/tftpboot/。
-
修改poap.py脚本中的option变量。
-
username scp文件传输账号
-
password scp文件传输密码
-
hostname scp服务器地址
-
target_system_image 设备镜像名称
-
options = {
"username": "xxx",
"password": "12345678",
"hostname": "10.x.x.x",
"transfer_protocol": "scp",
"mode": "serial_number",
"target_system_image": "nxos.9.3.1.bin",
}
- 在脚本中函数’def set_defaults_and_validate_options():'中可以查看到默认对配置文件和镜像文件的目录设置等。
# Transfer protocol (http, ftp, tftp, scp, etc.)
set_default("transfer_protocol", "scp")
# Directory where the config resides
set_default("config_path", "/var/lib/tftpboot/")
# Target image and its path (single image is default)
set_default("target_system_image", "")
set_default("target_image_path", "/var/lib/tftpboot/")
- 脚本&配置&镜像文件存储
TFTP主目录为**/var/lib/tftpboot/**,脚本&配置&镜像文件统一放置到这个目录。
- MD5SUM校验
(1) 脚本&配置&镜像文件都必须做MD5校验,否则脚本执行会失败。
(2) 根据CISCO官方提供的shell命令,可以对脚本&配置文件内容做md5sum,以后每次只要修改了脚本或配置文件的内容,都需要再重新做校验。
(3) 镜像文件只对文件名做md5sum。
- poap脚本校验,在shell下执行如下命令
f