[Openstack-operators] [Openstack] diskimage-builder: prepare ubuntu 17.x images

Volodymyr Litovka doka.ua at gmx.com
Fri Feb 9 13:48:53 UTC 2018


Hi Tony,

this patch works for me:

--- 
diskimage-builder/diskimage_builder/elements/ubuntu/root.d/10-cache-ubuntu-tarball.orig 
2018-02-09 12:20:02.117793234 +0000
+++ 
diskimage-builder/diskimage_builder/elements/ubuntu/root.d/10-cache-ubuntu-tarball 
2018-02-09 13:25:48.654868263 +0000
@@ -14,7 +14,9 @@

  DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud-images.ubuntu.com}
  DIB_RELEASE=${DIB_RELEASE:-trusty}
-BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-$ARCH-root.tar.gz}
+SUFFIX="-root"
+[[ $DIB_RELEASE =~ (artful|bionic) ]] && SUFFIX=""
+BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-${ARCH}${SUFFIX}.tar.gz}
  SHA256SUMS=${SHA256SUMS:-https://${DIB_CLOUD_IMAGES##http?(s)://}/$DIB_RELEASE/current/SHA256SUMS}
  CACHED_FILE=$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
  CACHED_FILE_LOCK=$DIB_LOCKFILES/$BASE_IMAGE_FILE.lock
@@ -45,9 +47,25 @@
          fi
          popd
      fi
-    # Extract the base image (use --numeric-owner to avoid UID/GID 
mismatch between
-    # image tarball and host OS e.g. when building Ubuntu image on an 
openSUSE host)
-    sudo tar -C $TARGET_ROOT --numeric-owner -xzf 
$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
+    if [ -n "$SUFFIX" ]; then
+      # Extract the base image (use --numeric-owner to avoid UID/GID 
mismatch between
+      # image tarball and host OS e.g. when building Ubuntu image on an 
openSUSE host)
+      sudo tar -C $TARGET_ROOT --numeric-owner -xzf 
$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
+    else
+      # Unpack image to IDIR, mount it on MDIR, copy it to TARGET_ROOT
+      IDIR="/tmp/`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; 
echo ''`"
+      MDIR="/tmp/`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; 
echo ''`"
+      sudo mkdir $IDIR $MDIR
+      sudo tar -C $IDIR --numeric-owner -xzf 
$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
+      sudo mount -o loop -t auto 
$IDIR/$DIB_RELEASE-server-cloudimg-${ARCH}.img $MDIR
+      pushd $PWD 2>/dev/null
+      cd $MDIR
+      sudo tar c . | sudo tar x -C $TARGET_ROOT -k --numeric-owner 
2>/dev/null
+      popd
+      # Clean up
+      sudo umount $MDIR
+      sudo rm -rf $IDIR $MDIR
+    fi
  }

  (


On 2/9/18 1:03 PM, Volodymyr Litovka wrote:
> Hi Tony,
>
> On 2/9/18 6:01 AM, Tony Breeds wrote:
>> On Thu, Feb 08, 2018 at 10:53:14PM +0200, Volodymyr Litovka wrote:
>>> Hi colleagues,
>>>
>>> does anybody here know how to prepare Ubuntu Artful (17.10) image using
>>> diskimage-builder?
>>>
>>> diskimage-builder use the following naming style for download -
>>> $DIB_RELEASE-server-cloudimg-$ARCH-root.tar.gz
>>>
>>> and while "-root" names are there for trusty/amd64 and xenial/amd64 distros,
>>> these archives for artful (and bionic) are absent on
>>> cloud-images.ubuntu.com. There are just different kinds of images, not
>>> source tree as in -root archives.
>>>
>>> I will appreciate any ideas or knowledge how to customize 17.10-based image
>>> using diskimage-builder or in diskimage-builder-like fashion.
>> You might like to investigate the ubuntu-minimal DIB element which will
>> build your ubuntu image from apt rather than starting with the pre-built
>> image.
> good idea, but with
>
> export DIST="ubuntu-minimal"
> export DIB_RELEASE=artful
>
> diskimage-builder fails with the following debug:
>
> 2018-02-09 10:33:22.426 | dib-run-parts Sourcing environment file 
> /tmp/in_target.d/pre-install.d/../environment.d/10-dib-init-system.bash
> 2018-02-09 10:33:22.427 | + source 
> /tmp/in_target.d/pre-install.d/../environment.d/10-dib-init-system.bash
> 2018-02-09 10:33:22.427 | ++++ dirname 
> /tmp/in_target.d/pre-install.d/../environment.d/10-dib-init-system.bash
> 2018-02-09 10:33:22.428 | +++ 
> PATH='$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/tmp/in_target.d/pre-install.d/../environment.d/..'
> 2018-02-09 10:33:22.428 | +++ dib-init-system
> 2018-02-09 10:33:22.429 | + set -eu
> 2018-02-09 10:33:22.429 | + set -o pipefail
> 2018-02-09 10:33:22.429 | + '[' -f /usr/bin/systemctl -o -f 
> /bin/systemctl ']'
> 2018-02-09 10:33:22.429 | + [[ -f /sbin/initctl ]]
> 2018-02-09 10:33:22.429 | + [[ -f /etc/gentoo-release ]]
> 2018-02-09 10:33:22.429 | + [[ -f /sbin/init ]]
> 2018-02-09 10:33:22.429 | + echo 'Unknown init system'
> 2018-02-09 10:36:54.852 | + exit 1
> 2018-02-09 10:36:54.853 | ++ DIB_INIT_SYSTEM='Unknown init system
>
> while earlier it find systemd
>
> 2018-02-09 10:33:22.221 | dib-run-parts Sourcing environment file 
> /tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/10-dib-init-system.bash
> 2018-02-09 10:33:22.223 | + source 
> /tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/10-dib-init-system.bash
> 2018-02-09 10:33:22.223 | ++++ dirname 
> /tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/10-dib-init-system.bash
> 2018-02-09 10:33:22.224 | +++ 
> PATH=/home/doka/DIB/dib/bin:/home/doka/DIB/dib/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/..
> 2018-02-09 10:33:22.224 | +++ dib-init-system
> 2018-02-09 10:33:22.225 | + set -eu
> 2018-02-09 10:33:22.225 | + set -o pipefail
> 2018-02-09 10:33:22.225 | + '[' -f /usr/bin/systemctl -o -f 
> /bin/systemctl ']'
> 2018-02-09 10:33:22.225 | + echo systemd
> 2018-02-09 10:33:22.226 | ++ DIB_INIT_SYSTEM=systemd
> 2018-02-09 10:33:22.226 | ++ export DIB_INIT_SYSTEM
>
> it seems somewhere in the middle something happens to systemd package
>> In the meantime I'll look at how we can consume the .img file, which is
>> similar to what we'd need to do for Fedora
> script 
> diskimage-builder/diskimage_builder/elements/ubuntu/root.d/10-cache-ubuntu-tarball 
> contains the function get_ubuntu_tarball() which, after all checks, 
> does the following:
>
> sudo tar -C $TARGET_ROOT --numeric-owner -xzf 
> $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
>
> probably, the easiest hack around the issue is to change above to smth 
> like
>
> sudo (
> mount -o loop <image> <mount point>
> tar cv  <mount point> | tar xv -C $TARGET_ROOT ...
> )
>
> Will try this.
>
> -- 
> Volodymyr Litovka
>    "Vision without Execution is Hallucination." -- Thomas Edison

-- 
Volodymyr Litovka
   "Vision without Execution is Hallucination." -- Thomas Edison

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-operators/attachments/20180209/e4f5cf1e/attachment.html>


More information about the OpenStack-operators mailing list