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

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

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

前提条件

  • 必须在您的部署环境中具有 PXE 服务器。可以在任何 Linux 发行版上设置 PXE 服务器。
  • 确认预植入的配置文件中 -- 后设置的参数 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 service dataplane
    set interface eth0 <ip-cidr-format> plane mgmt
    start service 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 服务器软件并配置所需的设置以设置 PXE 服务器。有关更多详细信息,请参见 Linux 文档。
  4. 安装 Apache 服务器和 TFTP 以及配置 PXE 服务器所需的其他组件。
  5. NSX Edge 安装程序 ISO 文件复制或下载到临时文件夹。
  6. 挂载 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/
  7. (可选) 编辑 /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 密码。
      例如,添加以下命令。
      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 命令设置密码,则在首次登录时不会提示用户更改密码。否则,用户必须在首次登录时更改密码。

  8. 将以下几行添加到 /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=bionic netcfg/do_not_use_netplan=true --
  9. 将以下几行添加到 /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";
  10. 重新启动 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