X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lbuild-initvm.sh;h=58030ccccdccfd24199d1c2e9c57b971805388f3;hb=refs%2Fheads%2Fmaster;hp=1d64ce0cd72153ec55ecb7f2c6006ed98805bceb;hpb=aeea301adaee5dc22b096a9ccada83fe7efd9459;p=build.git diff --git a/lbuild-initvm.sh b/lbuild-initvm.sh index 1d64ce0c..a6ea96f1 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=f39 +DEFAULT_FCDISTRO=f43 DEFAULT_PLDISTRO=lxc DEFAULT_PERSONALITY=linux64 DEFAULT_MEMORY=3072 @@ -44,8 +44,9 @@ VIF_GUEST=eth0 ########## FEDORA_MIRROR="http://mirror.onelab.eu/" +# dnf-yum no longer exists in recent fedora FEDORA_MIRROR_KEYS="http://mirror.onelab.eu/keys/" -FEDORA_PREINSTALLED="dnf dnf-yum passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients" +FEDORA_PREINSTALLED="dnf passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients" DEBIAN_PREINSTALLED="openssh-server openssh-client" ########## networking utilities @@ -82,7 +83,7 @@ function package_method () { case $fcdistro in f[0-9]*|centos[0-9]*|sl[0-9]*) echo dnf ;; - wheezy|jessie|trusty|xenial|bionic|focal|jammy) + wheezy|jessie|trusty|xenial|bionic|focal|jammy|noble) echo debootstrap ;; *) echo "Unknown package_method for distro $fcdistro" ;; @@ -105,7 +106,7 @@ function network_config_method () { echo networkmanager ;; wheezy|jessie|trusty|xenial|bionic) echo interfaces ;; - focal|jammy) + focal|jammy|noble) echo systemd ;; *) echo "Unknown network_config_method for distro $fcdistro" ;; @@ -202,6 +203,8 @@ function fedora_download() { # copy yum config and repo files cp /etc/yum.conf $INSTALL_ROOT/etc/ cp /etc/yum.repos.d/fedora{,-updates}.repo $INSTALL_ROOT/etc/yum.repos.d/ + # on boxes managed by Francis's upgrade script, we use other mirrors + #cp /etc/yum.repos.d/so-fedora{,-updates}.repo $INSTALL_ROOT/etc/yum.repos.d/ # append fedora repo files with hardwired releasever and basearch if [ -z "$USE_UPSTREAM_REPOS" ]; then @@ -249,7 +252,11 @@ function fedora_download() { # So ideally if we want to be able to build f12 images from f18 we need an rpm that has # this patch undone, like we have in place on our f14 boxes (our f14 boxes need a f18-like rpm) - DNF="dnf --installroot=$INSTALL_ROOT --nogpgcheck -y --releasever=${fedora_release}" + DNF="dnf --installroot=$INSTALL_ROOT --no-best --nogpgcheck -y --releasever=${fedora_release}" + # dnf-yum no longer exists in recent fedora + case $fedora_release in + f41|f43) FEDORA_PREINSTALLED="$FEDORA_PREINSTALLED dnf-yum" ;; + esac echo "$DNF install $FEDORA_PREINSTALLED" $DNF install $FEDORA_PREINSTALLED || { echo "Failed to download rootfs, aborting." ; return 1; } @@ -417,7 +424,7 @@ function debian_mirror () { case $fcdistro in wheezy|jessie) echo http://ftp2.fr.debian.org/debian/ ;; - trusty|xenial|bionic|focal|jammy) + trusty|xenial|bionic|focal|jammy|noble) echo http://www-ftp.lip6.fr/pub/linux/distributions/Ubuntu/archive/ ;; *) echo unknown distro $fcdistro; exit 1;; esac @@ -913,7 +920,8 @@ function wait_for_ssh () { local lxc=$1; shift # if run in public_ip mode, we know the IP of the guest and it is specified here - [ -n "$1" ] && { guest_ip=$1; shift; } + local specified_ip + [ -n "$1" ] && { specified_ip=$1; shift; } #wait max 2 min for sshd to start local success="" @@ -922,14 +930,19 @@ 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) || : + if [ -n "$specified_ip" ]; then + guest_ip="${specified_ip}" + else + guest_ip=$(guest_ipv4 $lxc) || : + fi + echo "$counter-th attempt to reach sshd in container $lxc on address $guest_ip ..." [ -n "$guest_ip" ] && ssh -o "StrictHostKeyChecking no" $guest_ip arch && { 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" || : + # 2024 : lxc-enter-namespace is broken anyways + # 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) @@ -1090,6 +1103,7 @@ function main () { NETMASK=$(masklen_to_netmask $MASKLEN) GATEWAY=$(ip route show | grep default | awk '{print $3}' | head -1) VIF_HOST="vif$(echo $GUEST_HOSTNAME | cut -d. -f1)" + [[ -z "$GUEST_IP" ]] && { echo "could not resolve $GUEST_HOSTNAME - exiting" ; exit 1 ; } fi setup_lxc $lxc $fcdistro $pldistro $personality