#!/bin/bash if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then set -x fi set -eu set -o pipefail DIB_IPA_ENABLE_RESCUE=${DIB_IPA_ENABLE_RESCUE:-true} DIB_IPA_ENABLE_SYSTEMD_NETWORKD=${DIB_IPA_ENABLE_SYSTEMD_NETWORKD:-true} if $DIB_IPA_ENABLE_RESCUE; then # Make sure rescue works mkdir -p /etc/ipa-rescue-config fi case "$DIB_INIT_SYSTEM" in upstart) if [ -f /etc/init/ufw.conf ]; then mv /etc/init/ufw.conf /etc/init/ufw.conf.disabled fi if [ -f /etc/init/tgt.conf ]; then mv /etc/init/tgt.conf /etc/init/tgt.conf.disabled fi ;; systemd) if [[ $(systemctl --no-pager list-unit-files iptables) =~ 'enabled' ]]; then systemctl disable iptables.service fi systemctl enable $(svc-map ironic-python-agent).service if $DIB_IPA_ENABLE_RESCUE; then systemctl enable ironic-agent-create-rescue-user.path fi # NOTE(rpittau) disable caching remote package index to prevent # delays due to failures. # This is a new service for dnf-based systems (e.g. Centos8) to speed # up subsequent dnf commands, for example automated updates, and # it's not really needed in the ipa-ramdisk as we shouldn't install # anything during runtime. if [[ ${IPA_DISTRO_FAMILY} == 'rh' ]]; then if [[ ${YUM} == 'dnf' ]]; then systemctl disable dnf-makecache.service systemctl disable dnf-makecache.timer fi fi # NOTE(drannou) debian by default is using networking instead of # systemd-networkd. In some usecase like rescue, we need IPA to # re-launch dhclient when modifications are made on the interface. # The easiest way to manage that is to activate systemd-networkd. if $DIB_IPA_ENABLE_SYSTEMD_NETWORKD; then if [[ $DISTRO_NAME =~ debian ]] ; then rm /etc/network/interfaces rm -rf /etc/network/interfaces.d echo "[Match] Name=en* [Network] DHCP=yes" > /etc/systemd/network/99-dhcp.network systemctl enable systemd-networkd fi fi ;; sysv) update-rc.d iptables disable ;; *) echo "Unsupported init system" exit 1 ;; esac