X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lbuild-initvm.sh;h=df10e8ec63b9452b5c0b40f70e7f36f740eafe80;hb=ccdbfde0e9cda749d790f901247f1c524177c951;hp=e4d3c6afe300ec7dce8866a3855a8a430ae590f8;hpb=140ec07b8ce5a7f3994f1c0f14a22c8a04940691;p=build.git diff --git a/lbuild-initvm.sh b/lbuild-initvm.sh index e4d3c6af..df10e8ec 100755 --- a/lbuild-initvm.sh +++ b/lbuild-initvm.sh @@ -30,7 +30,7 @@ function lxcroot () { # XXX fixme : when creating a 32bits VM we need to call linux32 as appropriate...s -DEFAULT_FCDISTRO=f29 +DEFAULT_FCDISTRO=f31 DEFAULT_PLDISTRO=lxc DEFAULT_PERSONALITY=linux64 DEFAULT_MEMORY=3072 @@ -57,22 +57,21 @@ function gethostbyname () { # e.g. 21 -> 255.255.248.0 function masklen_to_netmask () { local masklen=$1; shift - python <=1 and masklen<=32): - print "Wrong masklen",masklen +masklen = $masklen +if not (1 <= masklen <= 32): + print("Wrong masklen", masklen) exit(1) -result=[] +result = [] for i in range(4): - if masklen>=8: + if masklen >= 8: result.append(8) - masklen-=8 + masklen -= 8 else: result.append(masklen) - masklen=0 -print ".".join([ str(256-2**(8-i)) for i in result ]) - + masklen = 0 +print(".".join([ str(256-2**(8-i)) for i in result ])) EOF } @@ -83,7 +82,7 @@ function package_method () { case $fcdistro in f[0-9]*|centos[0-9]*|sl[0-9]*) echo dnf ;; - wheezy|jessie|precise|trusty|utopic|vivid|wily|xenial) + wheezy|jessie|trusty|xenial|bionic) echo debootstrap ;; *) echo Unknown distro $fcdistro ;; @@ -313,7 +312,8 @@ function fedora_configure_systemd() { ln -sf /dev/null ${lxc_root}/etc/systemd/system/"getty@.service" rm -f ${lxc_root}/etc/systemd/system/getty.target.wants/*service || : # can't seem to handle this one with systemctl - chroot ${lxc_root} $personality chkconfig network on +# second part should trigger starting with fedora31, where the network target is not manually manageable + chroot ${lxc_root} $personality chkconfig network on || chroot ${lxc_root} $personality systemctl enable NetworkManager } # overwrite container yum config @@ -376,7 +376,7 @@ function debian_mirror () { case $fcdistro in wheezy|jessie) echo http://ftp2.fr.debian.org/debian/ ;; - precise|trusty|utopic|vivid|wily|xenial) + trusty|xenial|bionic) echo http://www-ftp.lip6.fr/pub/linux/distributions/Ubuntu/archive/ ;; *) echo unknown distro $fcdistro; exit 1;; esac @@ -784,13 +784,17 @@ function wait_for_ssh () { local counter=1 while [ "$current_time" -lt "$stop_time" ] ; do - echo "$counter-th attempt to reach sshd in container $lxc ..." - [ -z "$guest_ip" ] && guest_ip=$(guest_ipv4 $lxc) - [ -n "$guest_ip" ] && ssh -o "StrictHostKeyChecking no" $guest_ip 'uname -i' && { - success=true; echo "SSHD in container $lxc is UP on IP $guest_ip"; break ; } || : - counter=$(($counter+1)) - sleep 10 - current_time=$(date +%s) + echo "$counter-th attempt to reach sshd in container $lxc ..." + [ -z "$guest_ip" ] && guest_ip=$(guest_ipv4 $lxc) + [ -n "$guest_ip" ] && ssh -o "StrictHostKeyChecking no" $guest_ip 'uname -i' && { + success=true; echo "SSHD in container $lxc is UP on IP $guest_ip"; break ; } || : + # some of our boxes have gone through a long upgrade historically, and + # so they don't end up with the same gid mapping for the ssh_keys + # group as the ones in the guest that result from a fresh install + virsh -c lxc:/// lxc-enter-namespace $lxc /bin/bash -c "chown root:ssh_keys /etc/ssh/*_key" || : + counter=$(($counter+1)) + sleep 10 + current_time=$(date +%s) done # Thierry: this is fatal, let's just exit with a failure here @@ -864,6 +868,8 @@ function main () { local lxc_root=$(lxcroot $lxc) # rainchecks + # when using with the -i option, checking that $lxc_root is void + # is a little too much stress.. almost_empty $lxc_root || \ { echo "container $lxc already exists in $lxc_root - exiting" ; exit 1 ; } virsh -c lxc:/// domuuid $lxc >& /dev/null && \ @@ -872,9 +878,13 @@ function main () { # if IMAGE, copy the provided rootfs to lxc_root if [ -n "$IMAGE" ] ; then - [ ! -d "$IMAGE" ] && \ - { echo "$IMAGE rootfs folder does not exist - exiting" ; exit 1 ; } - rsync -a $IMAGE/ $lxc_root/ + if [ ! -d "$IMAGE" ]; then + echo "$IMAGE rootfs folder does not exist - exiting" + exit 1 + else + echo "Copying $IMAGE into $lxc_root with rsync --archive --delete" + rsync --archive --delete $IMAGE/ $lxc_root/ + fi fi # check we've exhausted the arguments