Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Apstra ZTP(设备)

Apstra ZTP 概述

注意:

本文档适用于 Apstra ZTP 4.1 版本。使用与您使用的 Juniper Apstra 版本对应的 Apstra ZTP 版本。(Apstra 版本早于 4.0 使用 Apstra ZTP 版本 1.0.0 或 2.0.0。有关更多信息,请参阅 Juniper Apstra 3.3.0 用户指南。)

Apstra ZTP 是一款全自动部署服务器,适用于数据中心基础架构系统。(Apstra ZTP 取代了社区支持的 Aeon-ZTPS 软件,该软件以前用于在 Apstra 环境中实施 ZTP。)Apstra ZTP 使您能够引导 Apstra 数据中心设备,而无需考虑底层 NOS 机制的差异。从 Apstra 的角度来看,ZTP 是一个过程,它将设备从初始启动迁移到 Apstra 通过设备系统代理进行管理的过程。

根据 ZTP 的配置方式,该过程可能包括(但不总是)以下功能:

  • DHCP 服务
  • 设置设备管理员/root 密码
  • 为设备系统代理创建设备用户
  • 升级/降级 NOS
  • 上机或异机设备系统代理安装

另请参阅特定于供应商的信息:

注意:

为了防止在 ZTP 过程中出现问题时被锁定在设备外,ZTP 使用默认的硬编码凭据。这些凭据包括:

  • root/admin
  • 奥萨明/奥萨明

您可以使用 Apstra 提供的虚拟机映像 (.ova.qcow2.gz.vhdx.gz) 或构建自己的 ZTP 服务器,并将 Apstra 提供的设备调配脚本用作现有 ZTP/DHCP 过程的一部分,在启动过程中自动在设备上安装代理。Apstra ZTP 参考实施包含以下三个阶段:

  1. 通用 DHCP 阶段
    • 设备通过 DHCP 请求 IP 地址。
    • 设备将收到分配的 IP 地址和要执行的脚本指针(或使用 Apstra 提供的虚拟机映像,则接收要安装的操作系统映像)。
  2. 初始化阶段
    • 设备使用 TFTP 下载 ZTP 脚本。
    • 设备执行下载的脚本,准备进行管理。这包括验证设备是否运行受支持的操作系统。
  3. 代理安装阶段
    • ZTP 脚本会进行 API 调用,在设备上安装设备系统代理。

Apstra ZTP 虚拟机服务器资源要求

Apstra ZTP 作为 Ubuntu 18.04 LTS 服务器运行,运行 DHCP、HTTP 和 TFTP 服务器,并且 Apstra 提供的 ZTP 脚本必须针对您的环境进行自定义。下表显示了生产环境的最低服务器规格:

资源 设置
访客操作系统类型 Ubuntu 18.04 LTS 64 位
记忆 2 GB
Cpu 1 个 vCPU
磁盘存储 64 GB
网络 至少 1 个网卡。首次为 DHCP 配置

Apstra ZTP 网络要求

目标 端口 角色
设备代理 DHCP 服务器(续订)和广播(请求) udp/67 -> udp/68 DHCP 客户端
设备代理 Apstra ZTP any -> tcp/80 Bootstrap 和 API 脚本
Arista 和 Cisco 设备代理 Apstra ZTP any -> udp/69 用于 POAP 和 ZTP 的 TFTP
Apstra ZTP 控制器 any -> tcp/443 设备系统代理安装程序 API

除了 ZTP 特定的网络要求外,Apstra ZTP 服务器和设备代理还需要与控制器的连接。有关更多信息,请参阅 Juniper Apstra 安装和升级指南 中的所需通信端口。

您可以从 Apstra GUI 监控设备 ZTP 状态。在左侧导航菜单中,导航至 “设备> ZTP 状态>设备”。

每个与 DHCP 和 ZTP 交互的设备都会随其系统 ID(序列号)(如果已知、ZTP 状态、ZTP 最新事件和上次更新设备状态)一起列出。

要查看设备的完整 DHCP 和 ZTP 日志,请单击“Show Log”图标。

系统列出了与 DHCP 或 ZTP 交互的任何设备。如果不再需要设备的日志,请单击 Delete 按钮。

所有进程的日志文件都在目录中 /containers_data/logs

您可以通过 Apstra GUI 监控 Apstra ZTP 服务器上的 ZTP 服务。从左侧导航菜单中,导航至 “> ZTP 状态>服务的设备”。

每个服务名称都包含其 Docker IP 地址、服务状态以及上次更新服务状态的时刻。

下载和部署 Apstra ZTP 虚拟机

Apstra ZTP 软件在独立的 Apstra ZTP 虚拟机上交付
  1. 作为注册支持用户,请从瞻博网络支持下载相应的 Apstra VM 映像。
    VMware OVA 图像 apstra-ztp-4.1.*-<build-version>.ova (示例: apstra-ztp-4.1.0-4.ova
    Microsoft Hyper-V apstra-ztp-4.1.*-<build-version>.vhdx.gz (示例: apstra-ztp-4.1.0-115.vhdx.gz
    Linux KVM QCOW2 图片 apstra-ztp-4.1.*-<build-version>.qcow2.gz (示例: apstra-ztp-4.1.0-115.qcow2.gz
  2. 使用提供的 SHA512/MD5 校验和验证下载的文件。
  3. 使用适当的资源部署虚拟机。
  4. TFTP、NGINX (HTTP)、DHCPd、状态。和 MySQL Docker 容器默认已启用并运行。
  5. 如果不想使用 Apstra ZTP DHCP 服务器,请停止并禁用 dhcpd 容器。

配置静态管理 IP 地址 (Apstra ZTP)

默认情况下,Apstra ZTP 服务器会尝试通过 DHCP 为其 eth0 接口分配 IP 地址。如果您使用 Apstra ZTP 服务器作为 DHCP 服务器,则必须设置静态管理 IP 地址。

  1. 以用户管理员身份 SSH 到 Apstra 服务器。(ssh admin@<apstra-server-ip>其中<apstra-server-ip>为 Astra 服务器的 IP 地址。)
  2. /etc/netplan/01-netcfg.yaml编辑文件以配置静态管理 IP 地址。请参见下方示例。(有关使用 netplan 的更多信息,请参阅 https://netplan.io/examples
  3. 使用以下方法之一应用更改:
    • 使用命令 sudo reboot重新启动 Apstra 服务器。
    • 运行命令 sudo netplan apply

配置 ZTP 用户

您可以使用任何具有 API 写访问权限(例如管理员)的已配置 Apstra GUI 用户,但我们建议您创建一个指定用户(例如“ztp”),该用户分配了预定义的角色 device_ztp。device_ztp 角色允许用户对控制器进行 API 调用,以请求设备系统代理安装。有关更多信息,请参阅 用户/角色管理

配置 DHCP 服务器

Apstra 软件随 ISC DHCP 服务器一起提供,用于设备管理网络。如果您使用不同的 DHCP 服务器,则负责为 Apstra 提供的 DHCP 服务器配置本指南中介绍的相同选项。

例如,如果您使用 Juniper Junos OS 或 Junos OS 演化型设备,则必须确保服务器包含以下内容,以便设备加载正确的配置文件。

DHCP 配置文件位于目录中的 Apstra ZTP 虚拟机上 /containers_data/dhcp

注意:

所有配置文件均由 root。您必须使用 sudo 来运行命令,就像使用命令一sudoroot,或者在使用rootsudo -s命令后运行命令。

  1. dhcpd.conf使用 vi 或纳米文本编辑器编辑文件。
  2. 添加与管理网络对应的“组”:
    tftp-server-name ZTP 服务器的 IP 地址(非 URL)
    subnet IP 管理网络和网络掩码
    range 动态 DHCP IP 地址的范围。确保完整范围可用,并且不使用该范围内的静态配置 IP 地址。
    option routers 用于管理网络的默认网关路由器
    host 静态 DHCP IP 地址
    hardware ethernet 用于 DHCP 协商的管理接口
    fixed-address ,用于具有硬件以太网 MAC 的设备。使用交换机 MAC 地址
  3. 以下 DHCP 参数为可选参数:
  4. 如果您使用 ZTP 和 SONiC,则必须编辑以下内容:
    sonic-provision-url:ZTP 服务器的 IP 地址的 TFTP URL
  5. 修改任何 DHCP 配置后,使用sudo docker restart dhcpd命令重新启动 Apstra ZTP DHCP 进程。

配置 ZTP 的控制器 IP 地址

在 Apstra ZTP 服务器上的文件中配置控制器 IP 和 Apstra ZTP 用户名 /containers_data/status/app/aos.conf

ip 控制器的 IP 地址
user ZTP 或管理员用户的用户名
password 用户密码

编辑 Apstra ZTP 配置文件

Apstra ZTP VM 包括一个 TFTP 和 nginx HTTP 服务器。这些服务器不需要配置。这两个服务器都从目录中提供 /containers_data/tftp 文件。(从 Apstra 4.1.0 版开始,Cumulus 不再受支持。)

该文件 ztp.json 包含 Apstra ZTP 脚本 ztp.py的所有配置。

  1. ztp.json使用 vi 或纳米文本编辑器编辑文件。
  2. 该文件 ztp.json 的组织方式如下:
    默认值 - 所有设备均使用值,除非定义了更具体的密钥。
    "defaults": {
      "device-root-password": "root-password-123",
      "device-user": "admin",
      "device-user-password": "admin-password-123",
      "system-agent-params": {
        "agent_type": "onbox",
        "install_requirements": false
      }
    }
    平台 - 除非定义了更具体的密钥,否则将用于网络平台的所有设备(“nxos”、“eos”、“junos”、“sonic”)。
    "sonic": {
      "sonic-versions": ["SONiC-OS-3.4.0-Enterprise_Advanced"],
      "sonic-image": "http://10.85.24.52/sonic/3.4.0/sonic-3.4.0-GA-adv-bcm.bin",
      "device-root-password": "admin",
      "device-user": "admin",
      "device-user-password": "admin",
      "custom-config": "sonic_custom.sh",
      "system-agent-params": {
        "agent_type": "onbox",
        "job_on_create": "install"
      }
    }
    模型 - 值用于特定设备型号(例如“QFX10002-36Q”)的所有设备。
    "QFX10002-36Q": {
      "junos-versions": ["21.2R1-S2.2"],
      "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-10-f-x86-64-21.2R1-S2.2-secure-signed.tgz"
     }
    序列号 - 值用于与特定设备序列号匹配的设备(例如“TH0TFD6TCET0015G0015”)。
    "TH0TFD6TCET0015G0015": {
      "sonic-versions": ["SONiC-OS-4.0.5-Enterprise_Advanced"],
      "sonic-image": "http://10.85.24.52/sonic/4.0.5/sonic-broadcom-enterprise-advanced-4.0.5-GA.bin"
    }

    更具体的数据优先于其他数据。例如,特定序列号的数据优先于任何其他数据,然后是模型,然后是平台,最后是默认数据。

  3. ztp.json 文件使用以下密钥:
    junos-versions - 瞻博网络 Junos 设备的有效版本。如果设备未运行此列表中的版本,ZTP 会使用 junos-image 映像升级设备。 "junos-versions": [ "20.2R2-S3.5" ]
    junos-image - 如果正在运行的版本与列表中某个版本不匹配,则要加载的瞻博网络 Junos TGZ 映像的 junos-versions 文件名。
    • 默认情况下,映像名称通过 TFTP 从 ZTP 服务器目录中加载从 ZTP 服务器 /container_data/tftp/ 。例如: "junos-image": "jinstall-host-qfx-5-20.2R2-S3.5-signed.tgz"
    • 要使用任何 HTTP 服务器进行图像传输,请输入带 IP 地址的有效 HTTP URL。例如: "junos-image": "http://192.168.59.4/jinstall-host-qfx-5-20.2R2-S3.5-signed.tgz"

    此示例使用控制器中的 HTTP 传输瞻博网络 Junos 映像。

    sonic-versions- SONiC 设备的有效版本。如果设备未运行此列表中的版本,ZTP 会使用 sonic-image 映像升级设备。 "sonic-versions": [ "SONiC-OS-3.1.0a-Enterprise_Base" ]
    sonic-image - 如果正在运行的版本与列表中的版本不匹配,则要加载的 SONiC ONIE BIN 映像的 sonic-versions 文件名。
    • 默认情况下,映像名称通过 TFTP 从 ZTP 服务器目录中加载从 ZTP 服务器 /container_data/tftp/ 。例如: "sonic-image": "sonic-3.1.0a-bcm.bin"
    • 要使用任何 HTTP 服务器进行图像传输,请输入带 IP 地址的有效 HTTP URL。例如: "sonic-image": "http://192.168.59.3/sonic-3.1.0a-bcm.bin"

    此示例使用控制器中的 HTTP 传输 SONiC 映像。

    nxos-versions - NX-OS 设备的有效版本。如果设备未运行此列表中的版本,ZTP 会使用 nxos-image 映像升级设备。 "nxos-versions": [ "9.2(2)", "9.3(6)" ]
    nxos-image - 如果正在运行的版本与列表中的版本不匹配,则要加载的 NX-OS 映像的 nxos-versions 文件名。
    • 默认情况下,映像名称通过 TFTP 从 ZTP 服务器目录中加载从 ZTP 服务器 /container_data/tftp/ 。例如: "nxos-image": "nxos.9.3.6.bin"
    • 要使用任何 HTTP 服务器进行图像传输,请输入带 IP 地址的有效 HTTP URL。例如: "nxos-image": "http://192.168.59.4/nxos.9.3.6.bin"

    此示例使用 ZTP 服务器的 HTTP 传输 Cisco NX-OS 映像。

    eos-versions - Arista EOS 设备的有效版本。如果设备未运行此列表中的版本,ZTP 会使用 eos-image 映像升级设备。 "eos-versions": [ "4.22.3M", "4.24.5M" ]
    eos-image - 如果正在运行的版本与列表中的版本不匹配,要加载的 Arista EOS SWI 映像的 eos-versions 文件名。
    • 默认情况下,映像名称通过 TFTP 从 ZTP 服务器目录中加载从 ZTP 服务器 /container_data/tftp/ 。例如: "eos-image": "EOS-4.24.5M.swi"

    • 要使用任何 HTTP 服务器进行图像传输,请输入带 IP 地址的有效 HTTP URL。例如: "eos-image": "http://192.168.59.3/dos_images/EOS-4.24.5M.swi"

    此示例使用控制器中的 HTTP 传输 Arista EOS 图像。

    device-root-password - ZTP 进程将设备 root 密码设置为此值。对于 Arista EOS 和 Cisco NX-OS 设备, device-root-password 它用于为系统 admin 密码设置密码。 "device-root-password": "root-admin-password"
    device-user / device-user-password - 用于设备系统代理的用户名和密码。此外,如有必要,ZTP 进程会使用此用户名和密码在设备上创建一个用户。
    "device-user": "aosadmin",
    "device-user-password": "aosadmin-password"
    custom-config - TFTP 目录中自定义配置 shell 脚本的文件名或指向 HTTP 服务器上文件的 URL。此 shell 脚本在 ZTP 期间运行,允许您向设备添加自定义配置。有关更多信息,请参阅下方的平台特定信息部分。 "custom-config": "sonic_custom.sh"
    system-agent-params 用于在设备上创建新用户和设备系统代理的信息,如下所述。。
    agent_type - 代理类型、收件箱或异箱代理 "agent_type": "onbox"
    install_requirements - 始终设置为 false。目前不需要任何受支持的网络操作系统。 "install_requirements": false
    job_on_create - 设置为 install 在设备上安装机上代理

    "job_on_create": "install"

    Junos 示例

    {
            "junos": {
                    "junos-versions": ["21.2R1-S2.2"],
                    "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-5e-x86-64-21.2R1-S2.2-secure-signed.tgz",
                    "device-root-password": "root123",
                    "device-user": "admin",
                    "device-user-password": "admin",
                    "system-agent-params": {
                            "platform": "junos",
                            "agent_type": "offbox",
                            "job_on_create": "install"
                    }
            },
            "QFX10002-36Q": {
                   "junos-versions": ["21.2R1-S2.2"],
                    "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-10-f-x86-64-21.2R1-S2.2-secure-signed.tgz"
            },
            "JNP10002-60C [QFX10002-60C]": {
                    "junos-versions": ["21.2R1-S1.3"],
                    "junos-image": "http://10.85.24.52/juniper/21.2R1-S1.3/junos-vmhost-install-qfx-x86-64-21.2R1-S1.3.tgz"
            }
    }
    platform -(仅适用于异机代理)设置为设备平台(“eos”、“nxos”、“junos”)。仅小写。 "platform": "junos"
    open_options -(仅限异机代理)设置为在非设备代理到设备 API 接口之间启用 HTTPS。如果未定义open_options,则连接默认为 HTTP。
    "open_options": {
      "proto": "https",
      "port": "443"
    }
    packages - 设置以配置要上传到系统代理的其他 SDK 或扩展遥测包。
    "packages": [
      "aos-deployment-helper-nxos",
      "aosstdcollectors-builtin-nxos",
      "aosstdcollectors-custom-nxos"
    ]

有关中所有可用 system-agent-params 选项的 /api/system-agentsREST API 文档,请参阅 Swagger。