VIF_GUEST=eth0
##########
+FEDORA_MIRROR_BASE="http://mirror.onelab.eu/fedora/"
+FEDORA_MIRROR_KEYS="http://mirror.onelab.eu/keys/"
FEDORA_PREINSTALLED="yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients"
DEBIAN_PREINSTALLED="openssh-server openssh-client"
count=$(cd $dir; ls | wc -l); [ $count -le 1 ];
}
-##############################
-function check_yum_installed () {
- package=$1; shift
- rpm -q $package >& /dev/null || yum -y install $package
-}
-
-function check_yumgroup_installed () {
- group="$1"; shift
- yum grouplist "$group" | grep -q Installed || { yum -y groupinstall "$group" ; }
-}
-
##############################
function fedora_install() {
set -x
set -e
cache=/var/cache/lxc/fedora/$arch/$release
+ mkdir -p $cache
- mkdir -p /var/lock/subsys/
(
- flock -n -x 200 || { echo "Cache repository is busy." ; return 1 ; }
+ flock --exclusive --timeout 60 200 || { echo "Cache repository is busy." ; return 1 ; }
if [ ! -e "$cache/rootfs" ]; then
echo "Getting cache download in $cache/rootfs ... "
- fedora_download || { echo "Failed to download 'fedora base'"; return 1; }
+ fedora_download $cache || { echo "Failed to download 'fedora base'"; return 1; }
else
echo "Updating cache $cache/rootfs ..."
if ! yum --installroot $cache/rootfs -y --nogpgcheck update ; then
fi
fi
- echo "Copy $cache/rootfs to $lxc_root ... "
+ echo "Filling $lxc_root from $cache/rootfs ... "
rsync -a $cache/rootfs/ $lxc_root/
return 0
- ) 200>/var/lock/subsys/lxc
+ ) 200> $cache/lock
return $?
}
function fedora_download() {
set -x
+
+ cache=$1; shift
+
# check the mini fedora was not already downloaded
INSTALL_ROOT=$cache/partial
echo $INSTALL_ROOT
sed -i "s/\$basearch/$arch/g; s/\$releasever/$release/g;" $f
done
- MIRROR_URL=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os
+ MIRROR_URL=$FEDORA_MIRROR_BASE/releases/$release/Everything/$arch/os
RELEASE_URL1="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
# with fedora18 the rpms are scattered by first name
RELEASE_URL2="$MIRROR_URL/Packages/f/fedora-release-$release-1.noarch.rpm"
cat > $lxc_root/etc/yum.repos.d/building.repo <<EOF
[fedora]
-name=Fedora $release - $arch
-baseurl=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os/
+name=Fedora \$releasever - \$basearch
+baseurl=$FEDORA_MIRROR_BASE/releases/\$releasever/Everything/\$basearch/os/
enabled=1
metadata_expire=7d
gpgcheck=1
-gpgkey=http://mirror.onelab.eu/keys/RPM-GPG-KEY-fedora-$release-primary
+gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-$release-primary
[updates]
-name=Fedora $release - $arch - Updates
-baseurl=http://mirror.onelab.eu/fedora/updates/$release/$arch/
+name=Fedora \$releasever - \$basearch - Updates
+baseurl=$FEDORA_MIRROR_BASE/updates/\$releasever/\$basearch/
enabled=1
metadata_expire=7d
gpgcheck=1
-gpgkey=http://mirror.onelab.eu/keys/RPM-GPG-KEY-fedora-$release-primary
+gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-$release-primary
EOF
-
+
# for using vtest-init-lxc.sh as a general-purpose lxc creation wrapper
# just mention 'none' as the repo url
if [ -n "$REPO_URL" ] ; then
esac
# Enable cgroup -- xxx -- is this really useful ?
- mkdir $lxc_root/cgroup
+ [ -d $lxc_root/cgroup ] || mkdir $lxc_root/cgroup
# set up resolv.conf
cp /etc/resolv.conf $lxc_root/etc/resolv.conf
MEMORY=$(($MEMORY * 1024))
# the set of preinstalled packages - depends on mode
- if [ -z "$PREINSTALLED"] ; then
+ if [ -z "$PREINSTALLED" ] ; then
if [ -n "$BUILD_MODE" ] ; then
PREINSTALLED=devel.pkgs
else
masklen=$(ip addr show $PUBLIC_BRIDGE | grep -v inet6 | grep inet | awk '{print $2;}' | cut -d/ -f2)
NETMASK=$(masklen_to_netmask $masklen)
GATEWAY=$(ip route show | grep default | awk '{print $3}' | head -1)
- VIF_HOST="i$(echo $GUEST_HOSTNAME | cut -d. -f1)"
+ VIF_HOST="vif$(echo $GUEST_HOSTNAME | cut -d. -f1)"
fi
setup_lxc $lxc $fcdistro $pldistro $personality