Merge "Allowing ubuntu element use local image"

This commit is contained in:
Zuul 2021-10-01 15:31:07 +00:00 committed by Gerrit Code Review
commit 175c5c4da6
3 changed files with 43 additions and 23 deletions

View File

@ -21,5 +21,11 @@ Overrides:
``(universe|multiverse)``
* Setting ``DIB_DISTRIBUTION_MIRROR_UBUNTU_INSECURE`` updates apt
settings to allow insecure/unuthenticated repositories.
* Setting ``DIB_OFFLINE`` will prevent to download again the source image
if is already present in to $DIB_IMAGE_CACHE path.
* Setting ``DIB_LOCAL_IMAGE`` in combination with ``DIB_OFFLINE`` to
use a image from a local source (full path and file name) and not
download image from internet. Local source for release Trusty and Xenial
have to be tar.gz format. For other more recent release get the squashfs image.
.. element_deps::

View File

@ -2,3 +2,4 @@
# allowing the Ec2 data source from being queried on first boot, unless
# specified otherwise.
export DIB_CLOUD_INIT_DATASOURCES=${DIB_CLOUD_INIT_DATASOURCES:-"Ec2"}
export DIB_IMAGE_LOCAL_FILE=${DIB_IMAGE_LOCAL_FILE:-}

View File

@ -25,7 +25,8 @@ CACHED_FILE_LOCK=$DIB_LOCKFILES/$BASE_IMAGE_FILE.lock
CACHED_SUMS=$DIB_IMAGE_CACHE/SHA256SUMS.ubuntu.$DIB_RELEASE.$ARCH
function get_ubuntu_tarball() {
if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then
if [ -n "$DIB_OFFLINE" -a -z "$DIB_LOCAL_IMAGE" ] ; then
if [ -f "$CACHED_FILE" ] ; then
echo "Not checking freshness of cached $CACHED_FILE."
else
echo "Fetching Base Image"
@ -49,12 +50,24 @@ function get_ubuntu_tarball() {
fi
popd
fi
elif [ ! -f "$DIB_LOCAL_IMAGE" ] ; then
echo "Unable to find image $DIB_LOCAL_IMAGE locally! Check path and file name to source image"
exit 1
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)
if [ $DIB_RELEASE != "trusty" ] && [ $DIB_RELEASE != "xenial" ]; then
if [ "$DIB_RELEASE" != "trusty" ] && [ "$DIB_RELEASE" != "xenial" ] ; then
if [ -n "$DIB_LOCAL_IMAGE"] ; then
sudo unsquashfs -f -d $TARGET_ROOT $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
else
sudo unsquashfs -f -d $TARGET_ROOT $DIB_LOCAL_IMAGE
fi
else
if [ -n "$DIB_LOCAL_IMAGE"] ; then
sudo tar -C $TARGET_ROOT --numeric-owner -xzf $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
else
sudo tar -C $TARGET_ROOT --numeric-owner -xzf $DIB_LOCAL_IMAGE
fi
fi
}