3. ZTP零接触部署配置与验证
ZTP 自动部署链路与关键配置点
ZTP(Zero Touch Provisioning)让新交换机在出厂状态下上电后,通过管理口自动完成“获取地址 → 下载脚本 → 拉取镜像 → 应用配置 → 重启进入目标版本”的闭环。整条链路依赖 DHCP 服务器、HTTP/TFTP 文件服务器和 EOS 内置的 ZTP 客户端协同工作。下图给出各环节的交互顺序与关键参数位置,便于对照排查。
DHCP 服务器配置要点
ZTP 的第一步是让交换机通过 DHCP 拿到管理地址和引导文件路径。以 ISC DHCP 为例,需要在 dhcpd.conf 中为管理网段定义 Option 66(TFTP/HTTP 服务器地址)和 Option 67(引导脚本文件名)。Arista 交换机默认使用 Ma1 口发起 DHCP 请求,因此地址池必须覆盖管理网段。
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.100 10.10.10.200;
option routers 10.10.10.1;
option domain-name-servers 10.10.10.2;
option tftp-server-name "10.10.10.50";
option bootfile-name "http://10.10.10.50/ztp/ztp-script.py";
default-lease-time 600;
max-lease-time 7200;
}
关键点:bootfile-name 必须指向可访问的 HTTP 或 TFTP 路径。若使用 HTTP,需确保文件服务器返回正确的 Content-Type,且脚本文件具有可执行权限(Python 脚本需以 #!/usr/bin/env python 开头)。
ZTP 脚本编写与镜像加载
ZTP 脚本是整条链路的“大脑”,负责判断版本、下载镜像、应用配置。以下是一个可直接使用的脚本模板,适配 EOS 4.29.2F 目标版本:
#!/usr/bin/env python
import os
import sys
from time import sleep
TARGET_VERSION = "4.29.2F"
IMAGE_URL = "http://10.10.10.50/images/EOS-4.29.2F.swi"
BASE_CONFIG = "http://10.10.10.50/configs/base-template.cfg"
SWITCH_CONFIG = "http://10.10.10.50/configs/switch-01.cfg"
def get_current_version():
out = os.popen("show version | include image").read()
return out.strip()
def install_image():
os.system(f"copy {IMAGE_URL} flash:")
os.system(f"install source flash:/EOS-4.29.2F.swi")
os.system("reload now")
def apply_config():
os.system(f"copy {BASE_CONFIG} running-config")
os.system(f"copy {SWITCH_CONFIG} running-config")
os.system("write memory")
if __name__ == "__main__":
current = get_current_version()
if TARGET_VERSION not in current:
install_image()
else:
apply_config()
os.system("reload now")
脚本执行后,交换机会自动下载镜像、安装并重启。重启完成后,再次进入 ZTP 流程时会检测到版本已匹配,转而应用配置模板并保存。
验证 ZTP 部署结果
交换机重启完成后,通过 Console 或 SSH 登录,执行以下命令确认 ZTP 是否成功:
show ztp status:查看 ZTP 当前状态,成功时显示ZTP completed successfully。show version | include image:确认运行镜像为EOS-4.29.2F。show running-config | include hostname:确认主机名已按模板设置。show ip interface brief:确认管理口地址与 DHCP 分配一致。
若
show ztp status 显示 ZTP failed,优先检查 DHCP Option 67 是否可达、HTTP 服务器是否返回 200、脚本首行 shebang 是否正确。可在交换机上执行 show ztp log 查看详细错误。常见问题与排查路径
| 现象 | 可能原因 | 排查命令 |
|---|---|---|
| 交换机未发起 DHCP | Ma1 口未启用或管理网线未连接 | show interfaces Ma1 |
| DHCP 获取到地址但未下载脚本 | Option 67 未配置或 URL 不可达 | show dhcp client |
| 脚本下载后未执行 | 脚本无执行权限或 shebang 缺失 | 检查文件服务器权限 |
| 镜像安装失败 | flash 空间不足或镜像损坏 | show flash |
| 配置未应用 | 模板路径错误或语法不兼容 | show ztp log |
ZTP 过程中交换机可能多次重启,属于正常现象。请勿在 ZTP 未完成时手动中断电源或修改配置,否则可能导致部署状态不一致。