X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lbuild-initvm.sh;h=2725f0bcadf32c8029f5dc584f6c1e39a25c7a90;hb=fba948ad94bf4b06b4a4479eeb236f15da2e2dfc;hp=2a5518a8d042062ee7db55453d661ae155f27baf;hpb=3f1f3cef6af76e307e1c5241363b41ab41b4a249;p=build.git diff --git a/lbuild-initvm.sh b/lbuild-initvm.sh index 2a5518a8..2725f0bc 100755 --- a/lbuild-initvm.sh +++ b/lbuild-initvm.sh @@ -43,7 +43,7 @@ PUBLIC_BRIDGE=br0 VIF_GUEST=eth0 ########## -FEDORA_MIRROR_BASE="http://mirror.onelab.eu/fedora/" +FEDORA_MIRROR="http://mirror.onelab.eu/" 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" DEBIAN_PREINSTALLED="openssh-server openssh-client" @@ -51,28 +51,27 @@ DEBIAN_PREINSTALLED="openssh-server openssh-client" ########## networking utilities function gethostbyname () { local hostname=$1 - python -c "import socket; print socket.gethostbyname('"$hostname"')" 2> /dev/null + python3 -c "import socket; print(socket.gethostbyname('"$hostname"'))" 2> /dev/null } # 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 } @@ -141,7 +140,7 @@ function fedora_install() { fedora_download $cache || { echo "Failed to download 'fedora base'"; return 1; } else echo "Updating cache $cache/rootfs ..." - if ! dnf --installroot $cache/rootfs --releasever ${fedora_release} -y --nogpgcheck update ; then + if ! dnf --installroot $cache/rootfs --releasever=${fedora_release} -y --nogpgcheck update ; then echo "Failed to update 'fedora base', continuing with last known good cache" else echo "Update finished" @@ -179,40 +178,42 @@ function fedora_download() { # copy yum config and repo files cp /etc/yum.conf $INSTALL_ROOT/etc/ - cp /etc/yum.repos.d/fedora* $INSTALL_ROOT/etc/yum.repos.d/ + cp /etc/yum.repos.d/fedora{,-updates}.repo $INSTALL_ROOT/etc/yum.repos.d/ - # append fedora repo files with desired ${fedora_release} and $basearch + # append fedora repo files with hardwired releasever and basearch for f in $INSTALL_ROOT/etc/yum.repos.d/* ; do sed -i "s/\$basearch/$arch/g; s/\$releasever/${fedora_release}/g;" $f done - MIRROR_URL=$FEDORA_MIRROR_BASE/releases/${fedora_release}/Everything/$arch/os - # since fedora18 the rpms are scattered by first name - # first try the second version of fedora-release first - RELEASE_URLS="" - local subindex - for subindex in 3 2 1; do - RELEASE_URLS="$RELEASE_URLS $MIRROR_URL/Packages/f/fedora-release-${fedora_release}-1.noarch.rpm" - done - - RELEASE_TARGET=$INSTALL_ROOT/fedora-release-${fedora_release}.noarch.rpm - local found="" - local attempt - for attempt in $RELEASE_URLS; do - if curl --silent --fail $attempt -o $RELEASE_TARGET; then - echo "Successfully Retrieved $attempt" - found=true - break - else - echo "Failed (not to worry about) with attempt $attempt" - fi - done - [ -n "$found" ] || { echo "Could not retrieve fedora-release rpm - exiting" ; exit 1; } +# looks like all this business about fetching fedora-release is not needed +# it does +# MIRROR_URL=$FEDORA_MIRROR/fedora/releases/${fedora_release}/Everything/$arch/os +# # since fedora18 the rpms are scattered by first name +# # first try the second version of fedora-release first +# RELEASE_URLS="" +# local subindex +# for subindex in 3 2 1; do +# RELEASE_URLS="$RELEASE_URLS $MIRROR_URL/Packages/f/fedora-release-${fedora_release}-${subindex}.noarch.rpm" +# done +# +# RELEASE_TARGET=$INSTALL_ROOT/fedora-release-${fedora_release}.noarch.rpm +# local found="" +# local attempt +# for attempt in $RELEASE_URLS; do +# if curl --silent --fail $attempt -o $RELEASE_TARGET; then +# echo "Successfully Retrieved $attempt" +# found=true +# break +# else +# echo "Failed (not to worry about) with attempt $attempt" +# fi +# done +# [ -n "$found" ] || { echo "Could not retrieve fedora-release rpm - exiting" ; exit 1; } mkdir -p $INSTALL_ROOT/var/lib/rpm rpm --root $INSTALL_ROOT --initdb # when installing f12 this apparently is already present, so ignore result - rpm --root $INSTALL_ROOT -ivh $INSTALL_ROOT/fedora-release-${fedora_release}.noarch.rpm || : +# rpm --root $INSTALL_ROOT -ivh $INSTALL_ROOT/fedora-release-${fedora_release}.noarch.rpm || : # however f12 root images won't get created on a f18 host # (the issue here is the same as the one we ran into when dealing with a vs-box) # in a nutshell, in f12 the glibc-common and filesystem rpms have an apparent conflict @@ -223,7 +224,7 @@ 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 --releasever=${fedora_release} --nogpgcheck -y" + DNF="dnf --installroot=$INSTALL_ROOT --nogpgcheck -y" echo "$DNF install $FEDORA_PREINSTALLED" $DNF install $FEDORA_PREINSTALLED || { echo "Failed to download rootfs, aborting." ; return 1; } @@ -279,16 +280,12 @@ EOF local guest_ifcfg=${lxc_root}/etc/sysconfig/network-scripts/ifcfg-$VIF_GUEST mkdir -p $(dirname ${guest_ifcfg}) - # starting with f29, we go for NetworkManager as older network-scripts - # is about to be deprecated - local nm_controlled=false - [[ $fcdistro == f29 ]] && nm_controlled=true - [[ $fcdistro == f3[0-9] ]] && nm_controlled=true - + # starting with f27, we go for NetworkManager + # no more NM_CONTROLLED nonsense if [ -n "$NAT_MODE" ]; then - write_guest_ifcfg_natip $nm_controlled + write_guest_ifcfg_natip else - write_guest_ifcfg_publicip $nm_controlled + write_guest_ifcfg_publicip fi > $guest_ifcfg [ -z "$IMAGE" ] && fedora_configure_yum $lxc $fcdistro $pldistro @@ -338,8 +335,7 @@ function fedora_configure_yum () { # use mirroring/ stuff instead of a hard-wired config local repofile=$lxc_root/etc/yum.repos.d/building.repo yumconf_mirrors $repofile ${DIRNAME} $fcdistro \ - "no-exclusion-in-this-context" \ - $FEDORA_MIRROR_BASE + "" $FEDORA_MIRROR # the keys stuff requires adjustment though sed -i $repofile -e s,'gpgkey=.*',"gpgkey=${FEDORA_MIRROR_KEYS}/RPM-GPG-KEY-fedora-${fedora_release}-primary," @@ -579,7 +575,6 @@ EOF # this one is dhcp-based function write_guest_ifcfg_natip () { - local nm_controlled=$1; shift cat <