if [ -d $OLD_CONTAINER_BACKUP_PATH ]
then
echo " Removing the oldest container backup."
- rm -Rf ${OLD_CONTAINER_BACKUP_PATH}.old
+ rm --force --recursive ${OLD_CONTAINER_BACKUP_PATH}.old
mv $OLD_CONTAINER_BACKUP_PATH ${OLD_CONTAINER_BACKUP_PATH}.old
fi
case "$DISTRIBUTION" in
"CentOS")
- YUM_CONFIG=$SCRIPT_PATH/yum.conf.centos
+ YUM_CONFIG=$SCRIPT_PATH/yum.conf.centos.$SHORT_HOSTNAME
YUM_RELEASEVER=$DISTRIBUTION_VERSION
if [ -n "$SPEC_PACKAGES" ]
then
clean all
;;
"Fedora")
- DNF_CONFIG=$SCRIPT_PATH/dnf.conf.fedora
+ DNF_CONFIG=$SCRIPT_PATH/dnf.conf.fedora.$SHORT_HOSTNAME
DNF_RELEASEVER=$DISTRIBUTION_VERSION
if [ -n "$SPEC_PACKAGES" ]
then
clean all
;;
"Rocky")
- YUM_CONFIG=$SCRIPT_PATH/yum.conf.rocky
+ YUM_CONFIG=$SCRIPT_PATH/yum.conf.rocky.$SHORT_HOSTNAME
YUM_RELEASEVER=$DISTRIBUTION_VERSION
if [ -n "$SPEC_PACKAGES" ]
then
mkdir --parents $CONTAINER_BUILDROOT
+ if [ -f $CONTAINER_SOURCE_PATH/config.$SHORT_HOSTNAME ]
+ then
+ SOURCE_CONFIG=$CONTAINER_SOURCE_PATH/config.$SHORT_HOSTNAME
+ else
+ SOURCE_CONFIG=$CONTAINER_SOURCE_PATH/config
+ fi
+ cp --archive $SOURCE_CONFIG $CONTAINER_BUILD_PATH/config
sed --expression="s|__CONTAINER_FILESYSTEMS_PATH__|$CONTAINER_FILESYSTEMS_PATH|" \
--expression="s|__CONTAINER_PATH__|$CONTAINER_PATH|" \
--expression="s|__CONTAINER_START_ORDER__|$CONTAINER_START_ORDER|" \
- <$CONTAINER_SOURCE_PATH/config \
- >$CONTAINER_BUILD_PATH/config
+ --in-place \
+ $CONTAINER_BUILD_PATH/config
if [ -d $CONTAINER_SOURCE_PATH/hooks ]
then
cp --archive $CONTAINER_SOURCE_PATH/hooks $CONTAINER_BUILD_PATH
echo "BACKUPS_PATH=$BACKUPS_PATH" >>$ENV_FILE
echo "BUILD_PATH=$BUILD_PATH" >>$ENV_FILE
echo "FILESYSTEMS_PATH=$FILESYSTEMS_PATH" >>$ENV_FILE
+ echo "SHORT_HOSTNAME=$SHORT_HOSTNAME" >>$ENV_FILE
echo "SOURCES_PATH=$SOURCES_PATH" >>$ENV_FILE
echo "SSH_KEYS_PATH=$SSH_KEYS_PATH" >>$ENV_FILE
echo >>$ENV_FILE
BACKUPS_PATH=$BASE_PATH/backups
BUILD_PATH=$BASE_PATH/build
FILESYSTEMS_PATH=$BASE_PATH/filesystems
+ SHORT_HOSTNAME=$(hostname --short)
SOURCES_PATH=$BASE_PATH/sources
SSH_KEYS_PATH=$BASE_PATH/user-ssh
return 1
fi
- if [ ! -f $CONTAINER_SOURCE_PATH/config ]
+ SOURCE_CONFIG=$CONTAINER_SOURCE_PATH/config
+ if [ -f $CONTAINER_SOURCE_PATH/config.$SHORT_HOSTNAME ]
+ then
+ SOURCE_CONFIG=$CONTAINER_SOURCE_PATH/config.$SHORT_HOSTNAME
+ fi
+ if [ ! -f $SOURCE_CONFIG ]
then
echo "No config file found for $CONTAINER_BASENAME" >&2
return 2
POSTINSTALL_PATH=$CONTAINER_BUILDROOT/c3d/postinstall
if [ -d $POSTINSTALL_PATH ]
then
+ MD5SUMS_FILE=$POSTINSTALL_PATH/checksums/MD5SUMS
+ if [ -f $MD5SUMS_FILE ]
+ then
+ MD5SUMS_FILE=/c3d/postinstall/checksums/MD5SUMS
+ chroot $CONTAINER_BUILDROOT \
+ md5sum --check $MD5SUMS_FILE
+ RC=$?
+ if [ $RC -ne 0 ]
+ then
+ echo "File checksums differ, exiting" >&2
+ umount $CONTAINER_BUILDROOT/dev
+ umount $CONTAINER_BUILDROOT/proc
+ umount $CONTAINER_BUILDROOT/sys
+ return $RC
+ fi
+ fi
RUN_LIST=$POSTINSTALL_PATH/ssh/run.list
if [ -f $RUN_LIST ]
then
FIRSTBOOT_SCRIPT=$(echo $SCRIPT | sed "s|^$CONTAINER_ROOTFS||")
echo lxc-attach --name=$CONTAINER_NAME -- $FIRSTBOOT_SCRIPT
lxc-attach --name=$CONTAINER_NAME -- $FIRSTBOOT_SCRIPT
+ RC=$?
+ if [ $RC -ne 0 ]
+ then
+ read -p "$FIRSTBOOT_SCRIPTS returned ${RC}. Continue? [y/N]" ANSWER
+ if [ "$ANSWER" != "y" ]
+ then
+ return $RC
+ fi
+ fi
done
shopt -u nullglob
fi
set_c3d_ownership
postinstall
+RC=$?
+if [ $RC -ne 0 ]
+then
+ exit $RC
+fi
unprivilege