In this article I will share the steps to configure VLAN with bond for PXE based network installation. This article was written while using RHEL 7, so it is safe to say that it also fully covers CentOS 7. Although for SuSE and OpenSuSE they use autoyast.xml so this article is not applicable there.

How to configure VLAN with bond using kickstart in Linux (CentOS/RHEL 7)

 

What are Kickstart Installations?

Kickstart installations offer a means to automate the installation process, either partially or fully. Kickstart files contain answers to all questions normally asked by the installation program, such as what time zone you want the system to use, how the drives should be partitioned, or which packages should be installed. Providing a prepared Kickstart file when the installation begins therefore allows you to perform the installation automatically, without need for any intervention from the user. This is especially useful when deploying Red Hat Enterprise Linux on a large number of systems at once.

Kickstart files can be kept on a single server system and read by individual computers during the installation. This installation method can support the use of a single Kickstart file to install Red Hat Enterprise Linux on multiple machines, making it ideal for network and system administrators.

I will share two methods to configure VLAN with Bond. One would be with kickstart and the other is manual but can also be automated for PXE installation.

 

Method 1: Configure VLAN with Bond using Kickstart

I hope that you already have a working PXE server using which you plan to perform network installation on your setup.

There are various parameters supported for network. The GUI based kickstart configurator has very limited options so I prefer manually defining the values using CLI. The configurator will not be able to give you a enough syntax to configure VLAN with Bond.

Below syntax is to be used to configure VLAN with Bond in RHEL 7:

# 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>

Here,

--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.

For example:
I have a Bond device bond0 for which I wish to create a VLAN tagged interface with below details

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

So our example syntax to configure vlan with bond would look like:

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

 

Validate kickstart.conf

It is important that you validate your kickstart.conf before you trigger the network installation or else the installation may break which can be done using ksvalidator. This tool is part of pykickstart rpm. You can install the rpm using yum (if not available)

NOTE:
On RHEL system you must have an active subscription to RHN or you can configure a local offline repository using which “yum” package manager can install the provided rpm and it’s dependencies.
# yum install pykickstart -y

You may see below warning since we have defined the device name twice but this can be ignored as it won’t impact your installation.

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

You can ignore this warning and continue with PXE installation.

 

Method 2: Configure VLAN with Bond using %post

We can also use %post section to configure VLAN with Bond for PXE installation. I have written a script which collects all the values to configure VLAN with Bond and creates a network configuration file.

So to configure VLAN with Bond you can also write some scripts to automate and create a VLAN configuration file similar to below (you can omit any optional values which do not suit your environment)

# 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"

Next use the %post section of kickstart file to copy this file inside /etc/sysconfig/network-scripts. So with this your network installation will not get impacted and your vlan configuration file will also be available for 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

Once the target node is installed you can check /var/log/kickstart_post.log to get the status of the %post section.

 

Lastly I hope the steps from the article to configure VLAN with Bond using kickstart on CentOS/RHEL 7 Linux was helpful. So, let me know your suggestions and feedback using the comment section.

 

Leave a Reply

Your email address will not be published. Required fields are marked *