Add aarch64/amd64 support to amphora and devstack
The disk image create tool can now build aarch64/arm64 amphora images. The devstack plugin will facilitate image builds and upload to Glance for this CPU architecture. Change-Id: I1cebd8a3da58dc56ebbfac22f7802ab7f52585e1
This commit is contained in:
parent
651f095a81
commit
e99d7b9389
@ -94,13 +94,19 @@ function build_octavia_worker_image {
|
|||||||
octavia_dib_tracing_arg="-x"
|
octavia_dib_tracing_arg="-x"
|
||||||
fi
|
fi
|
||||||
if [[ ${OCTAVIA_AMP_BASE_OS:+1} ]] ; then
|
if [[ ${OCTAVIA_AMP_BASE_OS:+1} ]] ; then
|
||||||
export PARAM_OCTAVIA_AMP_BASE_OS='-i '$OCTAVIA_AMP_BASE_OS
|
export PARAM_OCTAVIA_AMP_BASE_OS='-i '$OCTAVIA_AMP_BASE_OS
|
||||||
fi
|
fi
|
||||||
if [[ ${OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID:+1} ]] ; then
|
if [[ ${OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID:+1} ]] ; then
|
||||||
export PARAM_OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID='-d '$OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID
|
export PARAM_OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID='-d '$OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID
|
||||||
fi
|
fi
|
||||||
if [[ ${OCTAVIA_AMP_IMAGE_SIZE:+1} ]] ; then
|
if [[ ${OCTAVIA_AMP_IMAGE_SIZE:+1} ]] ; then
|
||||||
export PARAM_OCTAVIA_AMP_IMAGE_SIZE='-s '$OCTAVIA_AMP_IMAGE_SIZE
|
export PARAM_OCTAVIA_AMP_IMAGE_SIZE='-s '$OCTAVIA_AMP_IMAGE_SIZE
|
||||||
|
fi
|
||||||
|
if [[ ${OCTAVIA_AMP_IMAGE_ARCH:+1} ]] ; then
|
||||||
|
export PARAM_OCTAVIA_AMP_IMAGE_ARCH='-a '$OCTAVIA_AMP_IMAGE_ARCH
|
||||||
|
fi
|
||||||
|
if [[ "$(trueorfalse False OCTAVIA_AMP_DISABLE_TMP_FS)" == "True" ]]; then
|
||||||
|
export PARAM_OCTAVIA_AMP_DISABLE_TMP_FS='-f'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use the infra pypi mirror if it is available
|
# Use the infra pypi mirror if it is available
|
||||||
@ -125,7 +131,7 @@ function build_octavia_worker_image {
|
|||||||
fi
|
fi
|
||||||
sudo mkdir -m755 ${dib_logs}
|
sudo mkdir -m755 ${dib_logs}
|
||||||
sudo chown $STACK_USER ${dib_logs}
|
sudo chown $STACK_USER ${dib_logs}
|
||||||
$OCTAVIA_DIR/diskimage-create/diskimage-create.sh -l ${dib_logs}/$(basename $OCTAVIA_AMP_IMAGE_FILE).log $octavia_dib_tracing_arg -o $OCTAVIA_AMP_IMAGE_FILE ${PARAM_OCTAVIA_AMP_BASE_OS:-} ${PARAM_OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID:-} ${PARAM_OCTAVIA_AMP_IMAGE_SIZE:-}
|
$OCTAVIA_DIR/diskimage-create/diskimage-create.sh -l ${dib_logs}/$(basename $OCTAVIA_AMP_IMAGE_FILE).log $octavia_dib_tracing_arg -o $OCTAVIA_AMP_IMAGE_FILE ${PARAM_OCTAVIA_AMP_BASE_OS:-} ${PARAM_OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID:-} ${PARAM_OCTAVIA_AMP_IMAGE_SIZE:-} ${PARAM_OCTAVIA_AMP_IMAGE_ARCH:-} ${PARAM_OCTAVIA_AMP_DISABLE_TMP_FS:-}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! [ -f $OCTAVIA_AMP_IMAGE_FILE ]; then
|
if ! [ -f $OCTAVIA_AMP_IMAGE_FILE ]; then
|
||||||
@ -559,8 +565,14 @@ function configure_lb_mgmt_sec_grp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function create_amphora_flavor {
|
function create_amphora_flavor {
|
||||||
|
disk_size=${OCTAVIA_AMP_IMAGE_SIZE:-2}
|
||||||
|
if [[ "$OCTAVIA_AMP_IMAGE_ARCH" =~ (aarch64|arm64) ]]; then
|
||||||
|
# DIB produces images larger than size specified, add another GB to the flavor disk
|
||||||
|
# See https://bugs.launchpad.net/diskimage-builder/+bug/1918461
|
||||||
|
disk_size=$((disk_size + 1))
|
||||||
|
fi
|
||||||
# Pass even if it exists to avoid race condition on multinode
|
# Pass even if it exists to avoid race condition on multinode
|
||||||
openstack flavor create --id auto --ram 1024 --disk ${OCTAVIA_AMP_IMAGE_SIZE:-2} --vcpus 1 --private m1.amphora -f value -c id --property hw_rng:allowed=True || true
|
openstack flavor create --id auto --ram 1024 --disk $disk_size --vcpus 1 --private m1.amphora -f value -c id --property hw_rng:allowed=True || true
|
||||||
amp_flavor_id=$(openstack flavor show m1.amphora -f value -c id)
|
amp_flavor_id=$(openstack flavor show m1.amphora -f value -c id)
|
||||||
iniset $OCTAVIA_CONF controller_worker amp_flavor_id $amp_flavor_id
|
iniset $OCTAVIA_CONF controller_worker amp_flavor_id $amp_flavor_id
|
||||||
}
|
}
|
||||||
@ -738,7 +750,15 @@ function octavia_init {
|
|||||||
OCTAVIA_AMP_IMAGE_ID=$(openstack image list -f value --property name=${OCTAVIA_AMP_IMAGE_NAME} -c ID)
|
OCTAVIA_AMP_IMAGE_ID=$(openstack image list -f value --property name=${OCTAVIA_AMP_IMAGE_NAME} -c ID)
|
||||||
|
|
||||||
if [ -n "$OCTAVIA_AMP_IMAGE_ID" ]; then
|
if [ -n "$OCTAVIA_AMP_IMAGE_ID" ]; then
|
||||||
openstack image set --tag ${OCTAVIA_AMP_IMAGE_TAG} --property hw_architecture='x86_64' --property hw_rng_model=virtio ${OCTAVIA_AMP_IMAGE_ID}
|
# Normalize architecture
|
||||||
|
# https://docs.openstack.org/nova/latest/configuration/config.html#filter_scheduler.image_properties_default_architecture
|
||||||
|
hw_arch=${OCTAVIA_AMP_IMAGE_ARCH:-x86_64}
|
||||||
|
if [[ "$OCTAVIA_AMP_IMAGE_ARCH" == "amd64" ]]; then
|
||||||
|
hw_arch="x86_64"
|
||||||
|
elif [[ "$OCTAVIA_AMP_IMAGE_ARCH" == "arm64" ]]; then
|
||||||
|
hw_arch="aarch64"
|
||||||
|
fi
|
||||||
|
openstack image set --tag ${OCTAVIA_AMP_IMAGE_TAG} --property hw_architecture=${hw_arch} --property hw_rng_model=virtio ${OCTAVIA_AMP_IMAGE_ID}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create a management network.
|
# Create a management network.
|
||||||
|
@ -53,6 +53,7 @@ OCTAVIA_AMP_FLAVOR_ID=${OCTAVIA_AMP_FLAVOR_ID:-"10"}
|
|||||||
OCTAVIA_AMP_IMAGE_NAME=${OCTAVIA_AMP_IMAGE_NAME:-"amphora-x64-haproxy"}
|
OCTAVIA_AMP_IMAGE_NAME=${OCTAVIA_AMP_IMAGE_NAME:-"amphora-x64-haproxy"}
|
||||||
OCTAVIA_AMP_IMAGE_FILE=${OCTAVIA_AMP_IMAGE_FILE:-${OCTAVIA_DIR}/diskimage-create/${OCTAVIA_AMP_IMAGE_NAME}.qcow2}
|
OCTAVIA_AMP_IMAGE_FILE=${OCTAVIA_AMP_IMAGE_FILE:-${OCTAVIA_DIR}/diskimage-create/${OCTAVIA_AMP_IMAGE_NAME}.qcow2}
|
||||||
OCTAVIA_AMP_IMAGE_TAG="amphora"
|
OCTAVIA_AMP_IMAGE_TAG="amphora"
|
||||||
|
OCTAVIA_AMP_IMAGE_ARCH=${OCTAVIA_AMP_IMAGE_ARCH:-"amd64"}
|
||||||
|
|
||||||
OCTAVIA_AMP_CONN_TIMEOUT=${OCTAVIA_AMP_CONN_TIMEOUT:-"10"}
|
OCTAVIA_AMP_CONN_TIMEOUT=${OCTAVIA_AMP_CONN_TIMEOUT:-"10"}
|
||||||
OCTAVIA_AMP_READ_TIMEOUT=${OCTAVIA_AMP_READ_TIMEOUT:-"120"}
|
OCTAVIA_AMP_READ_TIMEOUT=${OCTAVIA_AMP_READ_TIMEOUT:-"120"}
|
||||||
|
@ -98,7 +98,7 @@ Command syntax:
|
|||||||
.. code-block::
|
.. code-block::
|
||||||
|
|
||||||
$ diskimage-create.sh
|
$ diskimage-create.sh
|
||||||
[-a i386 | **amd64** | armhf | ppc64le ]
|
[-a i386 | **amd64** | armhf | aarch64 | ppc64le ]
|
||||||
[-b **haproxy** ]
|
[-b **haproxy** ]
|
||||||
[-c **~/.cache/image-create** | <cache directory> ]
|
[-c **~/.cache/image-create** | <cache directory> ]
|
||||||
[-d **bionic**/**8** | <other release id> ]
|
[-d **bionic**/**8** | <other release id> ]
|
||||||
|
@ -20,7 +20,7 @@ set -e
|
|||||||
usage() {
|
usage() {
|
||||||
echo
|
echo
|
||||||
echo "Usage: $(basename "$0")"
|
echo "Usage: $(basename "$0")"
|
||||||
echo " [-a i386 | **amd64** | armhf | ppc64le]"
|
echo " [-a i386 | **amd64** | armhf | aarch64 | ppc64le]"
|
||||||
echo " [-b **haproxy** ]"
|
echo " [-b **haproxy** ]"
|
||||||
echo " [-c **~/.cache/image-create** | <cache directory> ]"
|
echo " [-c **~/.cache/image-create** | <cache directory> ]"
|
||||||
echo " [-d **bionic**/**8** | <other release id> ]"
|
echo " [-d **bionic**/**8** | <other release id> ]"
|
||||||
@ -98,6 +98,7 @@ while getopts "a:b:c:d:efg:hi:k:l:no:pt:r:s:vw:x" opt; do
|
|||||||
if [ "$AMP_ARCH" != "i386" ] && \
|
if [ "$AMP_ARCH" != "i386" ] && \
|
||||||
[ "$AMP_ARCH" != "amd64" ] && \
|
[ "$AMP_ARCH" != "amd64" ] && \
|
||||||
[ "$AMP_ARCH" != "ppc64le" ] && \
|
[ "$AMP_ARCH" != "ppc64le" ] && \
|
||||||
|
[ "$AMP_ARCH" != "aarch64" ] && \
|
||||||
[ "$AMP_ARCH" != "armhf" ]; then
|
[ "$AMP_ARCH" != "armhf" ]; then
|
||||||
echo "Error: Unsupported architecture $AMP_ARCH specified"
|
echo "Error: Unsupported architecture $AMP_ARCH specified"
|
||||||
exit 3
|
exit 3
|
||||||
|
@ -21,7 +21,7 @@ acl:
|
|||||||
acpid-ppc64le:
|
acpid-ppc64le:
|
||||||
arch: ppc64le, ppc64el
|
arch: ppc64le, ppc64el
|
||||||
acpid:
|
acpid:
|
||||||
arch: i386, amd64, arm64, s390x
|
arch: i386, amd64, aarch64, arm64, s390x
|
||||||
apparmor:
|
apparmor:
|
||||||
apt-transport-https:
|
apt-transport-https:
|
||||||
at:
|
at:
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Added aarch64/arm64 amphora image support to the disk image create tool
|
||||||
|
and to the devstack plugin.
|
Loading…
Reference in New Issue
Block a user