|
|
|
#!/bin/bash -ex
|
|
|
|
|
|
|
|
[ "$(whoami)" = "root" ] || exec sudo $0 $@
|
|
|
|
[ "$(rpm -E %_arch)" = "x86_64" ] && exec setarch i686 $0 $@
|
|
|
|
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
|
|
|
|
NAME="centos32"
|
|
|
|
VERSION="$1" # E.g: '5'
|
|
|
|
IMAGE="${NAME}:${VERSION}"
|
|
|
|
INSTALLROOT="/dev/shm/${IMAGE}"
|
|
|
|
DIR="el${VERSION}"
|
|
|
|
|
|
|
|
REPO="centos-${VERSION}"
|
|
|
|
|
|
|
|
# Installation minimale de la distribution
|
|
|
|
rm -rf "${INSTALLROOT}"
|
|
|
|
install -m 644 "${DIR}/${REPO}.repo" "/etc/yum.repos.d"
|
|
|
|
yum install --disablerepo="*" --enablerepo="${REPO}*" --nogpgcheck --releasever="${VERSION}" -y --installroot "${INSTALLROOT}" libselinux yum yum-plugin-ovl
|
|
|
|
rm -f "/etc/yum.repos.d/${REPO}.repo"
|
|
|
|
touch "${INSTALLROOT}/etc/fstab" "${INSTALLROOT}/etc/mtab"
|
|
|
|
|
|
|
|
# Activation des dépôts YUM de l'atelier DEPL-IT (remplace les dépôts Internet)
|
|
|
|
rm -f "${INSTALLROOT}/etc/yum.repos.d/"*".repo"
|
|
|
|
install -m 644 "${DIR}/${REPO}.repo" "${INSTALLROOT}/etc/yum.repos.d"
|
|
|
|
install -m 644 "/etc/resolv.conf" "${INSTALLROOT}/etc/resolv.conf"
|
|
|
|
rm -f "${INSTALLROOT}/etc/group" "${INSTALLROOT}/etc/passwd" "${INSTALLROOT}/etc/pam.d/system-auth" "${INSTALLROOT}/usr/share/info/dir"
|
|
|
|
|
|
|
|
# Ré-installation de la distribution en utilisant le "yum" intégré
|
|
|
|
rm -rf "${INSTALLROOT}/var/lib/rpm/"*
|
|
|
|
install -m 644 "${DIR}/"{epel,repoforge}*".repo" "${INSTALLROOT}/etc/yum.repos.d"
|
|
|
|
cp -a "/dev/urandom" "${INSTALLROOT}/dev/urandom"
|
|
|
|
chroot "${INSTALLROOT}" yum install --nogpgcheck -y $(<${DIR}/packages.base)
|
|
|
|
find "${INSTALLROOT}" -name "*.rpmnew" -delete
|
|
|
|
|
|
|
|
# Création de l'image Tar
|
|
|
|
tar -C "${INSTALLROOT}" -c . >"${IMAGE}.tar"
|
|
|
|
rm -rf "${INSTALLROOT}"
|
|
|
|
|
|
|
|
# Création de l'image Docker
|
|
|
|
if [ "$(docker images -q "${IMAGE}")" != "" ]; then
|
|
|
|
docker rmi -f "${IMAGE}"
|
|
|
|
fi
|
|
|
|
docker import "${IMAGE}.tar" "${IMAGE}"
|
|
|
|
|
|
|
|
# Test de l'image
|
|
|
|
docker run "${IMAGE}" yum repolist
|
|
|
|
|
|
|
|
|
|
|
|
exit 0
|