Bug 1339156 - Improve documentation of --bootproto and --noipv4 network kickstart command options
Summary: Improve documentation of --bootproto and --noipv4 network kickstart command o...
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: doc-Installation_Guide
Version: 7.2
Hardware: Unspecified
OS: Unspecified
Target Milestone: beta
: 7.3
Assignee: Clayton Spicer
QA Contact: ecs-bugs
Depends On: 1291333
Blocks: ovirt-node-ng-platform
TreeView+ depends on / blocked
Reported: 2016-05-24 09:16 UTC by Radek Vykydal
Modified: 2019-03-06 02:41 UTC (History)
12 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 1338631
Last Closed: 2017-04-10 19:09:48 UTC
Target Upstream Version:

Attachments (Terms of Use)

System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1291333 1 None None None 2021-01-20 06:05:38 UTC
Red Hat Bugzilla 1338631 0 high CLOSED "SettingsNotFoundError" occur during install with ipv6 parameter in kickstart file. 2021-02-22 00:41:40 UTC

Internal Links: 1291333 1338631

Description Radek Vykydal 2016-05-24 09:16:49 UTC
+++ This bug was initially created as a clone of Bug #1338631 +++

Description of problem:
"SettingsNotFoundError" occur during install with ipv6 parameter in kickstart file.

Version-Release number of selected component (if applicable):
imgbased-0.6-0.1.el7ev.noarch vdsm-4.17.28-0.el7ev.noarch
Red Hat Enterprise Virtualization Manager Version:

How reproducible:

Steps to Reproduce:
1. Install ngn on machine with kickstart file in attachment
    network --device=enp0s25 --bootproto=static --ipv6=2001::1/64 --gateway=2001::2
2. Check the installation process

Actual results:
Installation failed, and "SettingsNotFoundError" occur.

Expected results:
Install successfully with ipv6 parameter

Additional info:

--- Additional comment from  on 2016-05-23 03:35 EDT ---

--- Additional comment from  on 2016-05-23 03:36 EDT ---

--- Additional comment from Fabian Deutsch on 2016-05-23 03:40:51 EDT ---

I can not find the error in the logs, but it looks like an issue in anaconda.

--- Additional comment from Radek Vykydal on 2016-05-23 09:25:12 EDT ---

The --bootoproto option is used only for ipv4 configuration. If used one needs to supply at least --ip and --netmask. In case you don't want to configure ipv4 on a device (not to use default which is dhcp), use --noipv4.
Also, for ipv6 gateway there is --ipv6gateway option (documented in rhel 7 installation guide, seems to be missing in https://github.com/rhinstaller/pykickstart/blob/master/docs/kickstart-docs.rst#network).

What is the goal of your configuration?
Use ipv4 on the device during installation and configure ipv6 only for target system? Or configure static ipv6 additionally to ipv4 (dhcp)?

--- Additional comment from Radek Vykydal on 2016-05-23 10:22:14 EDT ---

The connection on which anaconda crashes is not created because, as NM says:

07:20:45,048 WARNING NetworkManager: <warn>  ifcfg-rh: loading "/etc/sysconfig/network-scripts/ifcfg-enp0s25" fails: ipv4.addresses: this property cannot be empty for 'method=manual'

when parsing this ifcfg file:

07:20:49,254 DEBUG ifcfg: /etc/sysconfig/network-scripts/ifcfg-enp0s25:
07:20:49,254 DEBUG ifcfg:   # Generated by parse-kickstart
07:20:49,254 DEBUG ifcfg:   UUID=7d0ab369-4245-4067-b066-736b8250be67
07:20:49,254 DEBUG ifcfg:   IPADDR=
07:20:49,254 DEBUG ifcfg:   GATEWAY=2001::2
07:20:49,254 DEBUG ifcfg:   IPV6_AUTOCONF=no
07:20:49,255 DEBUG ifcfg:   NETMASK=
07:20:49,255 DEBUG ifcfg:   BOOTPROTO=static
07:20:49,255 DEBUG ifcfg:   DEVICE=enp0s25
07:20:49,255 DEBUG ifcfg:   IPV6ADDR=2001::1/64
07:20:49,255 DEBUG ifcfg:   ONBOOT=yes
07:20:49,255 DEBUG ifcfg:   IPV6INIT=yes

Anaconda probably shouldn't be crashing though.
With RHEL 7.3 nightly http://download.eng.brq.redhat.com/pub/rhel/nightly/RHEL-7.3-20160520.n.0/ the traceback doesn't occur. It is because new NM actually creates the connection for the ifcfg file.

--- Additional comment from  on 2016-05-23 23:22:30 EDT ---

Hi Radek,

I want to use ipv4 on the device during installation and configure ipv6 only for target system. And the configure ipv6 statically. Should I using kickstart commands like below?
   network --device=enp0s25 --bootproto=dhcp
   network --device=enp0s25 --noipv4 --ipv6=2001::1/64 --ipv6gateway=2001::2

test with above commands in kickstart file, it can be installed successfully, and the configuration file looks like right for ipv6
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s25 
# Generated by parse-kickstart
NAME="System enp0s25"

if so, I think some update should be done in https://github.com/rhinstaller/pykickstart/blob/master/docs/kickstart-docs.rst#network

--- Additional comment from Radek Vykydal on 2016-05-24 04:57:46 EDT ---

You can configure a device only once in kickstart. The second configuration would override (or merge? the results are undefined) the first one. If you want to use different configurations of a device for installer environment and for target system, and you use networking in early stage (eg to fetch kickstart) configure the device for installation using boot options and for target system using kickstart.

In your case, the device configuration is not supplied via boot options, but because the device needs to be activated in early stage (initramfs) to fetch kickstart, dracut default is used which is: try dhcp on all devices. (If you wanted to configure the device for installer explicitly, you could use boot option ip=enp0s25:dhcp.)

For target system, you should be able to use just:

network --device=enp0s25 --noipv4 --ipv6=2001::1/64 --ipv6gateway=2001::2

(note that due to your first network command "network --device=enp0s25 --bootproto=dhcp", the device is configured to use dhcp for ipv4 on target system which is perhaps not what you want, using --noipv4)

The problem is that anaconda assumes --activate flag to be set for the first network command in kickstart, which means the device will be reactivated in later stage of installer (after switch root from initramfs when anaconda starts) with the kickstart configuration. We are thinking about removing this assumption (in scope of bug #1277975) to make the scenarios as yours possible.

As a workaround, make the network command be not the first one, ie use dummy first network command for nonexisting device [1]

network --device=DUMMY
network --device=enp0s25 --noipv4 --ipv6=2001::1/64 --ipv6gateway=2001::2

We should definitely update documentation (both https://github.com/rhinstaller/pykickstart/blob/master/docs/kickstart-docs.rst#network and RHEL 7 installation guide saying that:
--bootproto is option for ipv4 configuration
--noipv4 needs to be used to disable ipv4 configuration
I'm going to open BZ for documentation team.

[1] or network --hostname can be moved to be the first command if it should be configured.

Comment 1 Radek Vykydal 2016-05-24 09:30:34 UTC
We should update Installation Guide kickstart network command documentation make clear that
1) --bootproto option regards ipv4 configuration only
2) --noipv4 option needs to be used to disable ipv4 configuration of a device

I propose adding this information (reword if needed) to --bootproto option:

Adding a note:

This option configures ipv4 configuration of the device. For ipv6 configuration use --ipv6 and --ipv6gateway options.

And update the first paragraph of --bootproto option description to:

--bootproto= - One of dhcp, bootp, ibft, or static. The default option is dhcp; the dhcp and bootp options are treated the same. To disable ipv4 configuration of the device, use --noipv4 option.

Comment 3 Radek Vykydal 2016-05-24 10:37:23 UTC
Document URL: 


Section Number and Name: 

23.3.2. Kickstart Commands and Options

Note You need to log in before you can comment on or make changes to this bug.