diskimage-builder/diskimage_builder/elements/simple-init/post-install.d/80-simple-init
Ian Wienand cbe1a0fc6b simple-init: default to NetworkManager for CentOS and Fedora
NetworkManager with simple-init has proven to be stable in OpenStack
infra, switch to it by default for CentOS and Fedora.  For CentOS 8
and Fedora, add a check to make it the only option.  Thus only CenOS 7
remains optionally using the legacy scripts; this is likely not used
anywhere (infra is really the primary user, where NetworkManager is
already used); we can likely remove this variable (and hence path) in
a future cleanup.

In the setup, remove rhel7 element which was never really tested.
Reorganise the fallthrough to call out the default paths as doing
nothing.

Change-Id: Ic996956da4b85f7d95179b8df9881d5f52c091af
2019-10-07 10:46:57 +00:00

58 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
case "$DIB_INIT_SYSTEM" in
upstart)
# nothing to do
exit 0
;;
systemd)
if [[ ${DISTRO_NAME} == centos && ${DIB_RELEASE} -eq 7 ]]; then
if [[ ${DIB_SIMPLE_INIT_NETWORKMANAGER} != 1 ]]; then
# NOTE(pabelanger): Glean requires network.service for
# these platforms when not using networkmanager
systemctl enable network.service
fi
elif [[ ${DISTRO_NAME} =~ (opensuse) ]]; then
# on suse, this is named wicked.service, but it's the same
# as network.service.
systemctl enable wicked.service
else
# NOTE(ianw): it might be better to whitelist platforms in
# the future, but for now assume it will "just work"
continue
fi
;;
openrc)
# let dib-init-system's postinstall handle enabling init scripts
exit 0
;;
sysv)
# nothing to do
exit 0
;;
*)
echo "Unsupported init system $DIB_INIT_SYSTEM"
exit 1
;;
esac
if [[ ${DIB_SIMPLE_INIT_NETWORKMANAGER} != 0 ]]; then
# If we are using NetworkManager then we have to avoid having the kernel
# configure ipv6 addresses on an interface (via router advertisements)
# until NetworkManager starts. If the interface is configured by the
# kernel before NetworkManager then NetworkManager will ignore the
# interface and not configure ipv4 on it. It does this because it assumes
# some other entity is in control of the interface.
# Debian has a many year old long bug report detailing this behavior with
# the most interesting comment being at the end:
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755202#331
DIB_SIMPLE_INIT_NETWORKMANAGER_IPV6_DELAY=${DIB_SIMPLE_INIT_NETWORKMANAGER_IPV6_DELAY:-30}
echo "net.ipv6.conf.default.router_solicitation_delay=${DIB_SIMPLE_INIT_NETWORKMANAGER_IPV6_DELAY}" >> /etc/sysctl.conf
fi