PXE 由几个组件组成:DHCP、HTTP 和 TFTP。该过程说明了如何在 Ubuntu 上设置 PXE 服务器。

DHCP 将 IP 设置动态分配给 NSX-T Data Center 组件,例如,NSX Edge。在 PXE 环境中,DHCP 服务器允许 NSX Edge 自动请求和接收 IP 地址。

TFTP 是一种文件传输协议。TFTP 服务器始终侦听网络上的 PXE 客户端。检测到任何网络 PXE 客户端请求 PXE 服务时,它会提供 NSX-T Data Center 组件 ISO 文件以及 preseed 文件中包含的安装设置。

前提条件

  • 必须在您的部署环境中具有 PXE 服务器。可以在任何 Linux 发布版本上设置 PXE 服务器。PXE 服务器必须具有两个接口,一个接口用于外部通信,另一个接口用于提供 DHCP IP 和 TFTP 服务。

    如果具有多个管理网络,您可以添加从 NSX-T Data Center 设备到其他网络的静态路由。

  • 确认预植入的配置文件中 -- 后设置的参数 net.ifnames=0 和 biosdevname=0 在重新引导后继续存在。

过程

  1. (可选) 使用 kickstart 文件在 Ubuntu 服务器上设置新的 TFTP 或 DHCP 服务。
    kickstart 文件是一个文本文件,其中包含在首次引导后在设备上运行的 CLI 命令。
    根据指向的 PXE 服务器命名 kickstart 文件。例如:
    nsxcli.install
    该文件必须复制到 Web 服务器,例如,在 /var/www/html/nsx-edge/nsxcli.install 中。

    在 kickstart 文件中,您可以添加 CLI 命令。例如,要配置管理接口的 IP 地址,请运行以下命令:

    stop dataplane
    set interface eth0 <ip-cidr-format> plane mgmt
    start dataplane

    要更改 admin 用户密码,请运行以下命令:

    set user admin password <new_password> old-password <old-password>

    如果在 preseed.cfg 文件中指定一个密码,请在 kickstart 文件中使用相同的密码。否则,将使用默认密码“default”。

    要将 NSX Edge 加入管理平面,请运行以下命令:

    join management-plane <manager-ip> thumbprint <manager-thumbprint> username <manager-username> password <manager password>
  2. 创建两个接口,一个接口用于管理,另一个接口用于 DHCP 和 TFTP 服务。
    确保 DHCP/TFTP 接口位于 NSX Edge 所在的同一子网中。

    例如,如果 NSX Edge 管理接口位于 192.168.210.0/24 子网中,请将 eth1 放在该相同子网中。

    # The loopback network interface
    auto lo
    iface lo inet loopback
    
    # PXE server's management interface
    auto eth0
    iface eth0 inet static
      address 192.168.110.81
      gateway 192.168.110.1
      netmask 255.255.255.0
      dns-nameservers 192.168.110.10
    
    # PXE server's DHCP/TFTP interface
    auto eth1
    iface eth1 inet static
      address 192.168.210.82
      gateway 192.168.210.1
      netmask 255.255.255.0
      dns-nameservers 192.168.110.10
    
  3. 安装 DHCP 服务器软件。
    sudo apt-get install isc-dhcp-server -y
  4. 编辑 /etc/default/isc-dhcp-server 文件,并添加提供 DHCP 服务的接口。
    INTERFACES="eth1"
  5. (可选) 如果要将该 DHCP 服务器作为本地网络的正式 DHCP 服务器,请在 /etc/dhcp/dhcpd.conf 文件中取消注释 authoritative; 行。
    ...
    authoritative;
    ...
  6. /etc/dhcp/dhcpd.conf 文件中,为 PXE 网络定义 DHCP 设置。
    例如:
    subnet 192.168.210.0 netmask 255.255.255.0 {
       range 192.168.210.90 192.168.210.95;
       option subnet-mask 255.255.255.0;
       option domain-name-servers 192.168.110.10;
       option routers 192.168.210.1;
       option broadcast-address 192.168.210.255;
       default-lease-time 600;
       max-lease-time 7200;
    }
  7. 启动 DHCP 服务。
    sudo service isc-dhcp-server start
  8. 验证 DHCP 服务是否正在运行。
    service --status-all | grep dhcp
  9. 安装 PXE 引导所需的 Apache、TFTP 和其他组件。
    sudo apt-get install apache2 tftpd-hpa inetutils-inetd
  10. 验证 TFTP 和 Apache 是否正在运行。
    service --status-all | grep tftpd-hpa
    service --status-all | grep apache2
  11. 将以下几行添加到 /etc/default/tftpd-hpa 文件中。
    RUN_DAEMON="yes"
    OPTIONS="-l -s /var/lib/tftpboot"
  12. 将下一行添加到 /etc/inetd.conf 文件中。
    tftp    dgram   udp    wait    root    /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
  13. 重新启动 TFTP 服务。
    sudo /etc/init.d/tftpd-hpa restart
  14. NSX Edge 安装程序 ISO 文件复制或下载到临时文件夹。
  15. 挂载 ISO 文件,并将安装组件复制到 TFTP 服务器和 Apache 服务器中。
    sudo mount -o loop ~/nsx-edge.<build>.iso /mnt
    cd /mnt
    sudo cp -fr install/netboot/* /var/lib/tftpboot/
    sudo mkdir /var/www/html/nsx-edge
    sudo cp -fr /mnt/* /var/www/html/nsx-edge/
  16. (可选) 编辑 /var/www/html/nsx-edge/preseed.cfg 文件以修改加密的密码。
    您可以使用 Linux 工具(如 mkpasswd)创建密码哈希值。
    sudo apt-get install whois
    sudo mkpasswd -m sha-512
    
    Password: 
    $6$SUFGqs[...]FcoHLijOuFD
    1. 修改 root 密码,编辑 /var/www/html/nsx-edge/preseed.cfg 并搜索下一行:
      d-i passwd/root-password-crypted password $6$tgmLNLMp$9BuAHhN...
    2. 替换哈希字符串。
      您不需要转义任何特殊字符,例如 $、'、" 或 \。
    3. preseed.cfg 中添加 usermod 命令以设置 root 和/或 admin 密码。
      例如,搜索 echo 'VMware NSX Edge' 行并添加以下命令。
      usermod --password '\$6\$VS3exId0aKmzW\$U3g0V7BF0DXlmRI.LR0v/VgloxVotEDp00bO2hUF8u/' root; \
      usermod --password '\$6\$VS3exId0aKmzW\$U3g0V7BF0DXlmRI.LR0v/VgloxVotEDp00bO2hUF8u/' admin; \

      哈希字符串是一个示例。您必须转义所有特殊字符。第一个 usermod 命令中的 root 密码替换在 d-i passwd/root-password-crypted password $6$tgm... 中设置的密码。

      如果使用 usermod 命令设置密码,则在首次登录时不会提示用户更改密码。否则,用户必须在首次登录时更改密码。

  17. 将以下几行添加到 /var/lib/tftpboot/pxelinux.cfg/default 文件中。

    将 192.168.210.82 替换为 TFTP 服务器的 IP 地址。

    label nsxedge
        kernel ubuntu-installer/amd64/linux
        ipappend 2
        append netcfg/dhcp_timeout=60 auto=true priority=critical vga=normal partman-lvm/device_remove_lvm=true netcfg/choose_interface=auto debian-installer/allow_unauthenticated=true preseed/url=http://192.168.210.82/nsx-edge/preseed.cfg mirror/country=manual mirror/http/hostname=192.168.210.82 nsx-kickstart/url=http://192.168.210.82/nsx-edge/nsxcli.install mirror/http/directory=/nsx-edge initrd=ubuntu-installer/amd64/initrd.gz mirror/suite=xenial --
  18. 将以下几行添加到 /etc/dhcp/dhcpd.conf 文件中。

    将 192.168.210.82 替换为 DHCP 服务器的 IP 地址。

    allow booting;
    allow bootp;
    
    next-server 192.168.210.82; #Replace this IP address
    filename "pxelinux.0";
  19. 重新启动 DHCP 服务。
    sudo service isc-dhcp-server restart
    注: 如果返回错误(例如:“stop: Unknown instance: start: Job failed to start”),请运行 sudo /etc/init.d/isc-dhcp-server stop,然后运行 sudo /etc/init.d/isc-dhcp-server startsudo /etc/init.d/isc-dhcp-server start 命令返回有关错误来源的信息。

后续步骤

使用 ISO 文件在裸机上安装 NSX Edge。请参见通过 ISO 文件自动安装 NSX Edge