Merge "Allowing ubuntu element use local image"

This commit is contained in:
Zuul 2021-11-23 16:59:28 +00:00 committed by Gerrit Code Review
commit b2a37f85f3
3 changed files with 26 additions and 20 deletions

View File

@ -21,5 +21,10 @@ 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`` to use a image from a local source (full path and file name)
and not download image from internet. Local source for release Trusty
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_LOCAL_IMAGE=${DIB_LOCAL_IMAGE:-""}

View File

@ -14,7 +14,7 @@ shopt -s extglob
DIB_RELEASE=${DIB_RELEASE:-trusty}
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud-images.ubuntu.com/$DIB_RELEASE/current}
if [ $DIB_RELEASE != "trusty" ] && [ $DIB_RELEASE != "xenial" ]; then
if [ $DIB_RELEASE != "trusty" ] ; then
BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-$ARCH.squashfs}
else
BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-$ARCH-root.tar.gz}
@ -25,36 +25,36 @@ 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
echo "Not checking freshness of cached $CACHED_FILE."
if [ -n "$DIB_LOCAL_IMAGE" ] ; then
echo "Using local image without download"
if [ ! -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
IMAGE_PATH=$DIB_LOCAL_IMAGE
else
echo "Fetching Base Image"
$TMP_HOOKS_PATH/bin/cache-url $SHA256SUMS $CACHED_SUMS
$TMP_HOOKS_PATH/bin/cache-url \
$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
pushd $DIB_IMAGE_CACHE
if ! grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check - ; then
# It is likely that an upstream http(s) proxy has given us a skewed
# result - either a cached SHA file or a cached image. Use cache-busting
# to get (as long as caches are compliant...) fresh files.
# Try the sha256sum first, just in case that is the stale one (avoiding
# downloading the larger image), and then if the sums still fail retry
# the image.
$TMP_HOOKS_PATH/bin/cache-url -f $SHA256SUMS $CACHED_SUMS
if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then
echo "Not checking freshness of cached $CACHED_FILE."
else
echo "Fetching Base Image"
$TMP_HOOKS_PATH/bin/cache-url $SHA256SUMS $CACHED_SUMS
$TMP_HOOKS_PATH/bin/cache-url \
$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
pushd $DIB_IMAGE_CACHE
if ! grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check - ; then
$TMP_HOOKS_PATH/bin/cache-url -f \
$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check -
fi
fi
popd
IMAGE_PATH=$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
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
sudo unsquashfs -f -d $TARGET_ROOT $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
if [ "$DIB_RELEASE" != "trusty" ] ; then
sudo unsquashfs -f -d $TARGET_ROOT $IMAGE_PATH
else
sudo tar -C $TARGET_ROOT --numeric-owner -xzf $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
sudo tar -C $TARGET_ROOT --numeric-owner -xzf $IMAGE_PATH
fi
}