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)`` ``(universe|multiverse)``
* Setting ``DIB_DISTRIBUTION_MIRROR_UBUNTU_INSECURE`` updates apt * Setting ``DIB_DISTRIBUTION_MIRROR_UBUNTU_INSECURE`` updates apt
settings to allow insecure/unuthenticated repositories. 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:: .. element_deps::

View File

@ -2,3 +2,4 @@
# allowing the Ec2 data source from being queried on first boot, unless # allowing the Ec2 data source from being queried on first boot, unless
# specified otherwise. # specified otherwise.
export DIB_CLOUD_INIT_DATASOURCES=${DIB_CLOUD_INIT_DATASOURCES:-"Ec2"} 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_RELEASE=${DIB_RELEASE:-trusty}
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud-images.ubuntu.com/$DIB_RELEASE/current} 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} BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-$ARCH.squashfs}
else else
BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-$ARCH-root.tar.gz} 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 CACHED_SUMS=$DIB_IMAGE_CACHE/SHA256SUMS.ubuntu.$DIB_RELEASE.$ARCH
function get_ubuntu_tarball() { function get_ubuntu_tarball() {
if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then if [ -n "$DIB_LOCAL_IMAGE" ] ; then
echo "Not checking freshness of cached $CACHED_FILE." 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 else
echo "Fetching Base Image" if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then
$TMP_HOOKS_PATH/bin/cache-url $SHA256SUMS $CACHED_SUMS echo "Not checking freshness of cached $CACHED_FILE."
$TMP_HOOKS_PATH/bin/cache-url \ else
$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE echo "Fetching Base Image"
pushd $DIB_IMAGE_CACHE $TMP_HOOKS_PATH/bin/cache-url $SHA256SUMS $CACHED_SUMS
if ! grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check - ; then $TMP_HOOKS_PATH/bin/cache-url \
# It is likely that an upstream http(s) proxy has given us a skewed $DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
# result - either a cached SHA file or a cached image. Use cache-busting pushd $DIB_IMAGE_CACHE
# 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 ! grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check - ; then if ! grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check - ; then
$TMP_HOOKS_PATH/bin/cache-url -f \ $TMP_HOOKS_PATH/bin/cache-url -f \
$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE $DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check - grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check -
fi fi
fi fi
popd IMAGE_PATH=$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
fi fi
# Extract the base image (use --numeric-owner to avoid UID/GID mismatch between # 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) # 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" ] ; then
sudo unsquashfs -f -d $TARGET_ROOT $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE sudo unsquashfs -f -d $TARGET_ROOT $IMAGE_PATH
else 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 fi
} }