如何在Linux(CentOS/RHEL 7)中使用kickstart配置具有绑定功能的VLAN

时间:2020-01-09 10:37:48  来源:igfitidea点击:

在本文中,我将分享"为基于PXE的网络安装使用绑定配置VLAN"的步骤。
本文是在使用RHEL 7时编写的,因此可以肯定地说它也全面介绍了CentOS7. 尽管对于SuSE和OpenSuSE,它们使用autoyast.xml,所以本文不适用于此。

什么是Kickstart安装?

Kickstart安装提供了部分或者完全自动化安装过程的方法。
Kickstart文件包含对安装程序通常会询问的所有问题的答案,例如我们希望系统使用哪个时区,应如何对驱动器进行分区或者应安装哪些软件包。
因此,在安装开始时提供准备好的Kickstart文件,使我们可以自动执行安装,而无需用户干预。
当在大量系统上一次部署Red Hat Enterprise Linux时,这特别有用。

Kickstart文件可以保存在单个服务器系统上,并在安装过程中由单个计算机读取。
这种安装方法可以支持使用单个Kickstart文件在多台机器上安装Red Hat Enterprise Linux,使其成为网络和系统管理员的理想选择。

我将分享两种使用Bond配置VLAN的方法。
一种是使用kickstart,另一种是手动,但也可以自动进行PXE安装。

方法1:使用Kickstart配置具有绑定的VLAN

另请阅读:

RHEL 7的示例Kickstart配置文件

我希望我们已经有一台能正常工作的PXE服务器,我们打算使用该服务器在设置上执行网络安装。

网络支持各种参数。
基于GUI的kickstart配置器的选项非常有限,因此我更喜欢使用CLI手动定义值。
配置程序将无法为我们提供足够的语法来配置带有Bond的VLAN。

以下语法用于在RHEL 7中配置具有Bond的VLAN:

# Network Information
network --bootproto=static --device=<Parent_Device> --ip=<VLAN_Interface_IP> --netmask=<VLAN_Interface_NetMask> --onboot=on --noipv6 --activate --vlanid=<VLAN_ID> --interfacename=<VLAN_Interface_Name>

其中

--device	Provide the device name to which you wish to tag the VLAN Interface. The traffic for VLAN interface will communicate through this device
--ip		Provide the VLAN interface IP
--netmask	Provide the VLAN NetMask
--onboot	To keep the VLAN interface enabled post reboot
--no-ipv6	Disable IPv6
--activate	Activate the interface immediately after setting the configuration
--vlanid	Provide the VLAN ID. The configuration file will be created based on the ID provided.

例如:我有一个绑定设备" bond0",我希望为其创建一个带有VLAN标记的接口,其中包含以下详细信息

VLAN IP:	192.151.21.130
VLAN NetMask:	255.255.255.192
VLAN ID:	565

因此,使用bond配置vlan的示例语法如下所示:

network --bootproto=static --device=bond0 --ip=192.151.21.130 --netmask=255.255.255.192  --onboot=on --noipv6 --activate --vlanid=565 --interfacename=vlan565

验证kickstart.conf

在触发网络安装之前,请先验证kickstart.conf,这很重要,否则安装可能会中断,可以使用ksvalidator来完成。
这个工具是pykickstartrpm的一部分。
我们可以使用yum安装rpm(如果不可用)

说明:

在RHEL系统上,我们必须具有RHN的活动订阅,或者我们可以配置本地脱机存储库," yum"程序包管理器可以使用该本地存储库安装所提供的rpm及其依赖项。

# yum install pykickstart -y

我们可能会在下面看到警告,因为我们已经两次定义了设备名称,但是可以忽略该名称,因为它不会影响安装。

# ksvalidator kickstart.conf
A network device with the name bond0 has already been defined.

我们可以忽略此警告并继续安装PXE。

提示:

我个人更喜欢通过绑定手动配置VLAN,而不是上面的步骤,因为我有一些糟糕的经验,其中安装失败或者VLAN配置无法有效工作。

方法2:使用%post配置具有绑定的VLAN

我们也可以使用%post部分来配置带有Bond的VLAN以进行PXE安装。
我编写了一个脚本,该脚本收集所有值以使用Bond配置VLAN并创建网络配置文件。

因此,要使用Bond配置VLAN,我们还可以编写一些脚本来自动化并创建类似于以下内容的VLAN配置文件(我们可以忽略任何不适合环境的可选值)

# cat /tmp/ifcfg-vlan565
VLAN="yes"
TYPE="Vlan"
DEVICE="vlan565"
PHYSDEV="bond0"
VLAN_ID="565"
BOOTPROTO="none"
IPADDR="192.151.21.130"
NETMASK="255.255.255.192"
IPV6INIT="no"
NAME="vlan565"
ONBOOT="yes"
NM_CONTROLLED="no"
NOZEROCONF="yes"

接下来,使用kickstart文件的%post部分将其复制到/etc/sysconfig/network-scripts中。
这样一来,网络安装将不会受到影响,vlan配置文件也将可用于NetworkManager

%post --interpreter=/bin/bash --log=/var/log/kickstart_post.log
echo "Copying vlan configuration file"
cp -rvf /tmp/ifcfg-vlan565 /etc/sysconfig/network-scripts/
%end

安装目标节点后,我们可以检查/var/log/kickstart_post.log以获取%post部分的状态。