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 文件中包含的安装设置。
过程
- (可选) 使用 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>
- 创建两个接口,一个接口用于管理,另一个接口用于 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 服务器软件。
sudo apt-get install isc-dhcp-server -y
- 编辑 /etc/default/isc-dhcp-server 文件,并添加提供 DHCP 服务的接口。
- (可选) 如果要将该 DHCP 服务器作为本地网络的正式 DHCP 服务器,请在 /etc/dhcp/dhcpd.conf 文件中取消注释 authoritative; 行。
- 在 /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;
}
- 启动 DHCP 服务。
sudo service isc-dhcp-server start
- 验证 DHCP 服务是否正在运行。
service --status-all | grep dhcp
- 安装 PXE 引导所需的 Apache、TFTP 和其他组件。
sudo apt-get install apache2 tftpd-hpa inetutils-inetd
- 验证 TFTP 和 Apache 是否正在运行。
service --status-all | grep tftpd-hpa
service --status-all | grep apache2
- 将以下几行添加到 /etc/default/tftpd-hpa 文件中。
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"
- 将下一行添加到 /etc/inetd.conf 文件中。
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
- 重新启动 TFTP 服务。
sudo /etc/init.d/tftpd-hpa restart
- 将 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 密码。
例如,搜索
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 命令设置密码,则在首次登录时不会提示用户更改密码。否则,用户必须在首次登录时更改密码。
- 将以下几行添加到 /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。