Blame install.sh

076e023
#!/bin/bash
076e023
076e023
set -e
076e023
# set -x
076e023
076e023
HOST=${HOST:-/host}
076e023
076e023
REALM=false
076e023
if [ -n "$1" ] ; then
076e023
	if [ "$#" -eq "1" ] && [ "$1" == "--uninstall" ] ; then
076e023
		exec /bin/uninstall.sh
076e023
		exit 99
076e023
	fi
076e023
	if [ "$1" == 'realm' -o "$1" == "/sbin/realm" -o "$1" == "/usr/sbin/realm" ] ; then
076e023
		if [ "$#" -eq "2" ] && [ "$2" == "--help" -o "$2" == "help" ] ; then
076e023
			$1 $2
076e023
			exit $?
076e023
		fi
076e023
		COMMAND="$1 $2"
076e023
		shift ; shift
076e023
		params=("--install=/")
076e023
		REALM=true
076e023
	elif [ "${1#-}" == "$1" ] ; then
076e023
		COMMAND="$1"
076e023
		shift
076e023
	elif [ "$#" -eq "1" ] && [ "$1" == "--help" ] ; then
076e023
		ipa-client-install --help
076e023
		exit 0
076e023
	fi
076e023
fi
076e023
076e023
function setup_service () {
076e023
	if chroot $HOST systemctl -q is-active "$NAME" ; then
076e023
		chroot $HOST systemctl stop "$NAME"
076e023
	fi
076e023
	sed "s%\${IMAGE}%${IMAGE:-sssd}%g; s%\${NAME}%${NAME:-sssd}%g;" /etc/sssd.service.template > $HOST/etc/systemd/system/$NAME.service
076e023
	chroot $HOST systemctl daemon-reload
076e023
	echo "Service $NAME.service configured to run SSSD container."
076e023
}
076e023
076e023
if [ -e "$HOST/etc/ipa/default.conf" ] ; then
076e023
	echo 'IPA client is already configured on this system.' >&2
076e023
	if [ "$#" -eq "1" ] && [ "$1" == "--migrate" ] ; then
076e023
		setup_service
076e023
		exit 0
076e023
	fi
076e023
	echo 'Run atomic uninstall $IMAGE first.' >&2
076e023
	exit 1
076e023
fi
076e023
076e023
mkdir -p "$HOST/var/log/sssd/install/sssd"
076e023
mv /var/log /var/log-aside && ln -s "$HOST/var/log/sssd/install" /var/log
076e023
076e023
export _SYSTEMCTL_LITE_LOGFILE="$HOST/var/log/sssd/install/systemctl.log"
076e023
touch $_SYSTEMCTL_LITE_LOGFILE
076e023
076e023
params=()
076e023
function slurp_params () {
076e023
	if [ -f "$1" ] ; then
076e023
		readarray -t params < <( xargs -n 1 echo < "$1" )
076e023
	fi
076e023
}
076e023
076e023
echo "Initializing configuration context from host ..."
076e023
( cd "$HOST" && while read f ; do
076e023
	if [ -e "$f" ] ; then
076e023
		cp --parents -rp -t / "$f"
076e023
	fi
076e023
done ) < /etc/host-data-list
076e023
mkdir -p /etc/sssd/systemctl-lite-enabled
076e023
rm -rf /etc/systemctl-lite-enabled
076e023
ln -s /etc/sssd/systemctl-lite-enabled /etc/systemctl-lite-enabled
076e023
076e023
if [ -z "$COMMAND" ] ; then
076e023
	if [ -f "$HOST/etc/$NAME/realm-join-options" ] ; then
076e023
		COMMAND='realm join -v'
076e023
		slurp_params "$HOST/etc/$NAME/realm-join-options"
076e023
		REALM=true
076e023
	else
076e023
		COMMAND='ipa-client-install -U --no-ntp'
076e023
		slurp_params "$HOST/etc/$NAME/ipa-client-install-options"
076e023
	fi
076e023
fi
076e023
076e023
if $REALM ; then
076e023
	for f in "$HOST/etc/$NAME/realm-join-password" ; do
076e023
		if [ -f "$f" ] ; then
076e023
			PASSWORD_FILE="$f"
076e023
			break
076e023
		fi
076e023
	done
076e023
	systemctl start dbus.service
076e023
fi
076e023
076e023
params+=("$@")
076e023
if [ -n "$PASSWORD_FILE" ] ; then
076e023
	$COMMAND "${params[@]}" < "$PASSWORD_FILE"
076e023
else
076e023
	$COMMAND "${params[@]}"
076e023
fi
076e023
076e023
if $REALM ; then
076e023
	( echo ; echo includedir /var/lib/sss/pubconf/krb5.include.d/ ) >> /etc/krb5.conf
076e023
fi
076e023
076e023
echo "Copying new configuration to host ..."
076e023
while read f ; do
076e023
	if [ -e "$f" ] ; then
076e023
		cp --parents -rp -t "$HOST" "$f"
076e023
	fi
076e023
done < /etc/host-data-list
076e023
chroot "$HOST" restorecon -ri -f - < /etc/host-data-list
076e023
076e023
setup_service