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 在重新引导后继续存在。
- 请参见裸机服务器系统要求。
过程
- (可选) 使用 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>
- 创建两个接口,一个接口用于管理,另一个接口用于 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
- 安装 DHCP 服务器软件并配置所需的设置以设置 PXE 服务器。有关更多详细信息,请参见 Linux 文档。
- 安装 Apache 服务器和 TFTP 以及配置 PXE 服务器所需的其他组件。
- 将 NSX Edge 安装程序 ISO 文件复制或下载到临时文件夹。
- 挂载 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/
- (可选) 编辑 /var/www/html/nsx-edge/preseed.cfg 文件以修改加密的密码。
您可以使用 Linux 工具(如 mkpasswd)创建密码哈希值。
sudo apt-get install whois
sudo mkpasswd -m sha-512
Password:
$6$SUFGqs[...]FcoHLijOuFD
- 修改 root 密码,编辑 /var/www/html/nsx-edge/preseed.cfg 并搜索下一行:
d-i passwd/root-password-crypted password $6$tgmLNLMp$9BuAHhN...
- 替换哈希字符串。
您不需要转义任何特殊字符,例如 $、'、" 或 \。
- 在 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 命令设置密码,则在首次登录时不会提示用户更改密码。否则,用户必须在首次登录时更改密码。
- 将以下几行添加到 /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 --
- 将以下几行添加到 /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";
- 重新启动 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 start。
sudo /etc/init.d/isc-dhcp-server start 命令返回有关错误来源的信息。
下一步做什么
使用 ISO 文件在裸机上安装 NSX Edge。请参见使用 ISO 文件自动安装裸机 NSX Edge。