Allowing ubuntu element use local image
Patch allow to set path for local image source, instead download latest or use the cached image. This permit to build image also in environment without internet access. re-propose of patch: https://review.opendev.org/c/openstack/diskimage-builder/+/809009 Change-Id: I54395b09af339caee040326b809e8fbf8b0e7d6a
This commit is contained in:
parent
85e20d9852
commit
443305ab61
@ -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::
|
||||||
|
@ -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:-""}
|
||||||
|
@ -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,6 +25,14 @@ 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_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
|
||||||
if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then
|
if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then
|
||||||
echo "Not checking freshness of cached $CACHED_FILE."
|
echo "Not checking freshness of cached $CACHED_FILE."
|
||||||
else
|
else
|
||||||
@ -33,28 +41,20 @@ function get_ubuntu_tarball() {
|
|||||||
$TMP_HOOKS_PATH/bin/cache-url \
|
$TMP_HOOKS_PATH/bin/cache-url \
|
||||||
$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
|
$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
|
||||||
pushd $DIB_IMAGE_CACHE
|
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 ! 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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user