15
This commit is contained in:
parent
beaad087bd
commit
f728799fe1
4
Makefile
4
Makefile
@ -12,3 +12,7 @@ destroy-multinode:
|
|||||||
install-aio:
|
install-aio:
|
||||||
bash install-docker.sh
|
bash install-docker.sh
|
||||||
bash install-all-in-one.sh
|
bash install-all-in-one.sh
|
||||||
|
|
||||||
|
install-deps:
|
||||||
|
dnf install -y epel-release
|
||||||
|
dnf install -y htop qemu-img
|
||||||
|
|||||||
@ -27,6 +27,27 @@ fi
|
|||||||
IMAGES_DIR="images"
|
IMAGES_DIR="images"
|
||||||
mkdir -p "${IMAGES_DIR}"
|
mkdir -p "${IMAGES_DIR}"
|
||||||
|
|
||||||
|
# Helper function to create a flavor if it doesn't already exist
|
||||||
|
create_flavor() {
|
||||||
|
local name="$1"
|
||||||
|
local vcpus="$2"
|
||||||
|
local ram="$3"
|
||||||
|
local disk="$4"
|
||||||
|
|
||||||
|
if openstack flavor show "$name" >/dev/null 2>&1; then
|
||||||
|
echo "Flavor '$name' already exists — skipping"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating flavor '$name' (${vcpus} vCPU / ${ram} MB RAM / ${disk} GB disk)..."
|
||||||
|
openstack flavor create \
|
||||||
|
--vcpus "$vcpus" \
|
||||||
|
--ram "$ram" \
|
||||||
|
--disk "$disk" \
|
||||||
|
--public \
|
||||||
|
"$name"
|
||||||
|
}
|
||||||
|
|
||||||
# Helper function to upload image only if not already in Glance
|
# Helper function to upload image only if not already in Glance
|
||||||
upload_image_if_needed() {
|
upload_image_if_needed() {
|
||||||
local glance_name="$1"
|
local glance_name="$1"
|
||||||
@ -35,6 +56,11 @@ upload_image_if_needed() {
|
|||||||
local disk_format="${4:-qcow2}"
|
local disk_format="${4:-qcow2}"
|
||||||
local container_format="${5:-bare}"
|
local container_format="${5:-bare}"
|
||||||
|
|
||||||
|
if [ -f "flags/skip_${glance_name}" ]; then
|
||||||
|
echo "Skipping '${glance_name}' (flags/skip_${glance_name} present)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
if openstack image show "${glance_name}" >/dev/null 2>&1; then
|
if openstack image show "${glance_name}" >/dev/null 2>&1; then
|
||||||
echo "Image '${glance_name}' already exists in Glance — skipping"
|
echo "Image '${glance_name}' already exists in Glance — skipping"
|
||||||
return 0
|
return 0
|
||||||
@ -70,23 +96,27 @@ upload_image_if_needed() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Flavors (unchanged - already idempotent)
|
# Ensure flags directory exists
|
||||||
if [ -f "skip_flavours" ]; then
|
mkdir -p flags
|
||||||
|
|
||||||
|
# Flavors
|
||||||
|
if [ -f "flags/skip_flavours" ]; then
|
||||||
echo "Skipping flavours creation"
|
echo "Skipping flavours creation"
|
||||||
else
|
else
|
||||||
openstack flavor show 1v1g10g || openstack flavor create --vcpus 1 --ram 1024 --disk 10 1v1g10g
|
# name vcpus ram disk
|
||||||
openstack flavor show 1v2g10g || openstack flavor create --vcpus 1 --ram 2048 --disk 10 1v2g10g
|
create_flavor 1v1g10g 1 1024 10
|
||||||
openstack flavor show 2v1g10g || openstack flavor create --vcpus 2 --ram 1024 --disk 10 2v1g10g
|
create_flavor 1v2g10g 1 2048 10
|
||||||
openstack flavor show 2v2g10g || openstack flavor create --vcpus 2 --ram 2048 --disk 10 2v2g10g
|
create_flavor 2v1g10g 2 1024 10
|
||||||
openstack flavor show 4v2g10g || openstack flavor create --vcpus 4 --ram 2048 --disk 10 4v2g10g
|
create_flavor 2v2g10g 2 2048 10
|
||||||
openstack flavor show 2v4g20g || openstack flavor create --vcpus 2 --ram 4096 --disk 20 2v4g20g
|
create_flavor 4v2g10g 4 2048 10
|
||||||
|
create_flavor 2v4g20g 2 4096 20
|
||||||
|
|
||||||
openstack flavor show 1v1g20g || openstack flavor create --vcpus 1 --ram 1024 --disk 20 1v1g20g
|
create_flavor 1v1g20g 1 1024 20
|
||||||
openstack flavor show 1v2g20g || openstack flavor create --vcpus 1 --ram 2048 --disk 20 1v2g20g
|
create_flavor 1v2g20g 1 2048 20
|
||||||
# ... (all other flavors as in original - omitted here for brevity; copy-paste them)
|
# ... (add further flavors here using the same pattern)
|
||||||
|
|
||||||
openstack flavor show t1.micro || openstack flavor create t1.micro --vcpus 1 --ram 1024 --ephemeral 5 --public
|
# create_flavor t1.micro 1 1024 0
|
||||||
openstack flavor show t2.micro || openstack flavor create t2.micro --vcpus 1 --ram 1024 --ephemeral 5 --public
|
# create_flavor t2.micro 1 1024 0
|
||||||
# ... (add the rest of t2.* flavors as needed)
|
# ... (add the rest of t2.* flavors as needed)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -108,7 +138,7 @@ ALMA8_LOCAL="http://www.ngtech.home/static/cloud-images/AlmaLinux-8-GenericCloud
|
|||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ALMA8_LOCAL}" >/dev/null && ALMA8_URL="${ALMA8_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ALMA8_LOCAL}" >/dev/null && ALMA8_URL="${ALMA8_LOCAL}"
|
||||||
upload_image_if_needed "almalinux-8" "${IMAGES_DIR}/AlmaLinux-8-GenericCloud-latest.x86_64.qcow2" "${ALMA8_URL}"
|
upload_image_if_needed "almalinux-8" "${IMAGES_DIR}/AlmaLinux-8-GenericCloud-latest.x86_64.qcow2" "${ALMA8_URL}"
|
||||||
|
|
||||||
# AlmaLinux 9 (similar pattern)
|
# AlmaLinux 9
|
||||||
ALMA9_URL="https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2"
|
ALMA9_URL="https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2"
|
||||||
ALMA9_LOCAL="http://www.ngtech.home/static/cloud-images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2"
|
ALMA9_LOCAL="http://www.ngtech.home/static/cloud-images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ALMA9_LOCAL}" >/dev/null && ALMA9_URL="${ALMA9_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ALMA9_LOCAL}" >/dev/null && ALMA9_URL="${ALMA9_LOCAL}"
|
||||||
@ -126,20 +156,19 @@ ROCKY9_LOCAL="http://www.ngtech.home/static/cloud-images/Rocky-9-GenericCloud-Ba
|
|||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ROCKY9_LOCAL}" >/dev/null && ROCKY9_URL="${ROCKY9_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ROCKY9_LOCAL}" >/dev/null && ROCKY9_URL="${ROCKY9_LOCAL}"
|
||||||
upload_image_if_needed "rockylinux-9" "${IMAGES_DIR}/Rocky-9-GenericCloud-Base.latest.x86_64.qcow2" "${ROCKY9_URL}"
|
upload_image_if_needed "rockylinux-9" "${IMAGES_DIR}/Rocky-9-GenericCloud-Base.latest.x86_64.qcow2" "${ROCKY9_URL}"
|
||||||
|
|
||||||
# Rocky Linux 10 - adjust if symlink changes
|
# Rocky Linux 10
|
||||||
ROCKY10_URL="https://dl.rockylinux.org/pub/rocky/10/images/x86_64/Rocky-10-GenericCloud-Base.latest.x86_64.qcow2"
|
ROCKY10_URL="https://dl.rockylinux.org/pub/rocky/10/images/x86_64/Rocky-10-GenericCloud-Base.latest.x86_64.qcow2"
|
||||||
ROCKY10_LOCAL="http://www.ngtech.home/static/cloud-images/Rocky-10-GenericCloud-Base.latest.x86_64.qcow2"
|
ROCKY10_LOCAL="http://www.ngtech.home/static/cloud-images/Rocky-10-GenericCloud-Base.latest.x86_64.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ROCKY10_LOCAL}" >/dev/null && ROCKY10_URL="${ROCKY10_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${ROCKY10_LOCAL}" >/dev/null && ROCKY10_URL="${ROCKY10_LOCAL}"
|
||||||
upload_image_if_needed "rockylinux-10" "${IMAGES_DIR}/Rocky-10-GenericCloud-Base.latest.x86_64.qcow2" "${ROCKY10_URL}"
|
upload_image_if_needed "rockylinux-10" "${IMAGES_DIR}/Rocky-10-GenericCloud-Base.latest.x86_64.qcow2" "${ROCKY10_URL}"
|
||||||
|
|
||||||
|
|
||||||
# CentOS 7
|
# CentOS 7
|
||||||
CENTOS7_URL="https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2111.qcow2"
|
CENTOS7_URL="https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2111.qcow2"
|
||||||
CENTOS7_LOCAL="http://www.ngtech.home/static/cloud-images/CentOS-7-x86_64-GenericCloud-2111.qcow2"
|
CENTOS7_LOCAL="http://www.ngtech.home/static/cloud-images/CentOS-7-x86_64-GenericCloud-2111.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${CENTOS7_LOCAL}" >/dev/null && CENTOS7_URL="${CENTOS7_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${CENTOS7_LOCAL}" >/dev/null && CENTOS7_URL="${CENTOS7_LOCAL}"
|
||||||
upload_image_if_needed "centos-7" "${IMAGES_DIR}/CentOS-7-x86_64-GenericCloud-2111.qcow2" "${CENTOS7_URL}"
|
upload_image_if_needed "centos-7" "${IMAGES_DIR}/CentOS-7-x86_64-GenericCloud-2111.qcow2" "${CENTOS7_URL}"
|
||||||
|
|
||||||
# CentOS 8
|
# CentOS Stream 8
|
||||||
CENTOS8_URL="https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2"
|
CENTOS8_URL="https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2"
|
||||||
CENTOS8_LOCAL="http://www.ngtech.home/static/cloud-images/CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2"
|
CENTOS8_LOCAL="http://www.ngtech.home/static/cloud-images/CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${CENTOS8_LOCAL}" >/dev/null && CENTOS8_URL="${CENTOS8_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${CENTOS8_LOCAL}" >/dev/null && CENTOS8_URL="${CENTOS8_LOCAL}"
|
||||||
@ -158,10 +187,11 @@ OL7_LOCAL="http://www.ngtech.home/static/cloud-images/OL7U9_x86_64-kvm-b257.qcow
|
|||||||
upload_image_if_needed "oracle-linux-7" "${IMAGES_DIR}/OL7U9_x86_64-kvm-b257.qcow2" "${OL7_URL}"
|
upload_image_if_needed "oracle-linux-7" "${IMAGES_DIR}/OL7U9_x86_64-kvm-b257.qcow2" "${OL7_URL}"
|
||||||
|
|
||||||
# Oracle Linux 8
|
# Oracle Linux 8
|
||||||
|
# FIX: local URL corrected from .qcow to .qcow2 to match the remote filename
|
||||||
OL8_URL="https://yum.oracle.com/templates/OracleLinux/OL8/u10/x86_64/OL8U10_x86_64-kvm-b271.qcow2"
|
OL8_URL="https://yum.oracle.com/templates/OracleLinux/OL8/u10/x86_64/OL8U10_x86_64-kvm-b271.qcow2"
|
||||||
OL8_LOCAL="http://www.ngtech.home/static/cloud-images/OL8U10_x86_64-kvm-b271.qcow"
|
OL8_LOCAL="http://www.ngtech.home/static/cloud-images/OL8U10_x86_64-kvm-b271.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${OL8_LOCAL}" >/dev/null && OL8_URL="${OL8_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${OL8_LOCAL}" >/dev/null && OL8_URL="${OL8_LOCAL}"
|
||||||
upload_image_if_needed "oracle-linux-8" "${IMAGES_DIR}/OL8U10_x86_64-kvm-b271.qcow" "${OL8_URL}"
|
upload_image_if_needed "oracle-linux-8" "${IMAGES_DIR}/OL8U10_x86_64-kvm-b271.qcow2" "${OL8_URL}"
|
||||||
|
|
||||||
# Oracle Linux 9
|
# Oracle Linux 9
|
||||||
OL9_URL="https://yum.oracle.com/templates/OracleLinux/OL9/u7/x86_64/OL9U7_x86_64-kvm-b269.qcow2"
|
OL9_URL="https://yum.oracle.com/templates/OracleLinux/OL9/u7/x86_64/OL9U7_x86_64-kvm-b269.qcow2"
|
||||||
@ -176,37 +206,39 @@ OL10_LOCAL="http://www.ngtech.home/static/cloud-images/OL10U1_x86_64-kvm-b270.qc
|
|||||||
upload_image_if_needed "oracle-linux-10" "${IMAGES_DIR}/OL10U1_x86_64-kvm-b270.qcow2" "${OL10_URL}"
|
upload_image_if_needed "oracle-linux-10" "${IMAGES_DIR}/OL10U1_x86_64-kvm-b270.qcow2" "${OL10_URL}"
|
||||||
|
|
||||||
# Fedora 43
|
# Fedora 43
|
||||||
|
# FIX: glance name was "oracle-linux-10" (wrong), corrected to "fedora-43"
|
||||||
FEDORA43_URL="https://download.fedoraproject.org/pub/fedora/linux/releases/43/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-43-1.6.x86_64.qcow2"
|
FEDORA43_URL="https://download.fedoraproject.org/pub/fedora/linux/releases/43/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-43-1.6.x86_64.qcow2"
|
||||||
FEDORA43_LOCAL="http://www.ngtech.home/static/cloud-images/Fedora-Cloud-Base-Generic-43-1.6.x86_64.qcow2"
|
FEDORA43_LOCAL="http://www.ngtech.home/static/cloud-images/Fedora-Cloud-Base-Generic-43-1.6.x86_64.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${FEDORA43_LOCAL}" >/dev/null && FEDORA43_URL="${FEDORA43_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${FEDORA43_LOCAL}" >/dev/null && FEDORA43_URL="${FEDORA43_LOCAL}"
|
||||||
upload_image_if_needed "oracle-linux-10" "${IMAGES_DIR}/Fedora-Cloud-Base-Generic-43-1.6.x86_64.qcow2" "${FEDORA43_URL}"
|
upload_image_if_needed "fedora-43" "${IMAGES_DIR}/Fedora-Cloud-Base-Generic-43-1.6.x86_64.qcow2" "${FEDORA43_URL}"
|
||||||
|
|
||||||
# Debian 11 (example - repeat pattern for 10/11/13)
|
# Debian 11
|
||||||
|
# FIX: local variable was misnamed DEBIAN12_LOCAL, corrected to DEBIAN11_LOCAL
|
||||||
DEBIAN11_URL="https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2"
|
DEBIAN11_URL="https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2"
|
||||||
DEBIAN12_LOCAL="http://www.ngtech.home/static/cloud-images/debian-11-generic-amd64.qcow2"
|
DEBIAN11_LOCAL="http://www.ngtech.home/static/cloud-images/debian-11-generic-amd64.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${DEBIAN11_LOCAL}" >/dev/null && DEBIAN11_URL="${DEBIAN11_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${DEBIAN11_LOCAL}" >/dev/null && DEBIAN11_URL="${DEBIAN11_LOCAL}"
|
||||||
upload_image_if_needed "debian-11" "${IMAGES_DIR}/debian-11-generic-amd64.qcow2" "${DEBIAN11_URL}"
|
upload_image_if_needed "debian-11" "${IMAGES_DIR}/debian-11-generic-amd64.qcow2" "${DEBIAN11_URL}"
|
||||||
|
|
||||||
|
# Debian 12
|
||||||
# Debian 12 (example - repeat pattern for 10/11/13)
|
|
||||||
DEBIAN12_URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2"
|
DEBIAN12_URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2"
|
||||||
DEBIAN12_LOCAL="http://www.ngtech.home/static/cloud-images/debian-12-generic-amd64.qcow2"
|
DEBIAN12_LOCAL="http://www.ngtech.home/static/cloud-images/debian-12-generic-amd64.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${DEBIAN12_LOCAL}" >/dev/null && DEBIAN12_URL="${DEBIAN12_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${DEBIAN12_LOCAL}" >/dev/null && DEBIAN12_URL="${DEBIAN12_LOCAL}"
|
||||||
upload_image_if_needed "debian-12" "${IMAGES_DIR}/debian-12-generic-amd64.qcow2" "${DEBIAN12_URL}"
|
upload_image_if_needed "debian-12" "${IMAGES_DIR}/debian-12-generic-amd64.qcow2" "${DEBIAN12_URL}"
|
||||||
|
|
||||||
# Debian 13 (example - repeat pattern for 10/11/13)
|
# Debian 13
|
||||||
DEBIAN13_URL="https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2"
|
DEBIAN13_URL="https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2"
|
||||||
DEBIAN13_LOCAL="http://www.ngtech.home/static/cloud-images/debian-13-generic-amd64.qcow2"
|
DEBIAN13_LOCAL="http://www.ngtech.home/static/cloud-images/debian-13-generic-amd64.qcow2"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${DEBIAN13_LOCAL}" >/dev/null && DEBIAN13_URL="${DEBIAN13_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${DEBIAN13_LOCAL}" >/dev/null && DEBIAN13_URL="${DEBIAN13_LOCAL}"
|
||||||
upload_image_if_needed "debian-13" "${IMAGES_DIR}/debian-13-generic-amd64.qcow2" "${DEBIAN13_URL}"
|
upload_image_if_needed "debian-13" "${IMAGES_DIR}/debian-13-generic-amd64.qcow2" "${DEBIAN13_URL}"
|
||||||
|
|
||||||
# Ubuntu Jammy
|
# Ubuntu Jammy (22.04)
|
||||||
UBUNTU_JAMMY_URL="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
|
UBUNTU_JAMMY_URL="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
|
||||||
UBUNTU_JAMMY_LOCAL="http://www.ngtech.home/static/cloud-images/jammy-server-cloudimg-amd64.img"
|
UBUNTU_JAMMY_LOCAL="http://www.ngtech.home/static/cloud-images/jammy-server-cloudimg-amd64.img"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${UBUNTU_JAMMY_LOCAL}" >/dev/null && UBUNTU_JAMMY_URL="${UBUNTU_JAMMY_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${UBUNTU_JAMMY_LOCAL}" >/dev/null && UBUNTU_JAMMY_URL="${UBUNTU_JAMMY_LOCAL}"
|
||||||
upload_image_if_needed "ubuntu-jammy" "${IMAGES_DIR}/jammy-server-cloudimg-amd64.img" "${UBUNTU_JAMMY_URL}"
|
upload_image_if_needed "ubuntu-jammy" "${IMAGES_DIR}/jammy-server-cloudimg-amd64.img" "${UBUNTU_JAMMY_URL}"
|
||||||
|
|
||||||
# Ubuntu Focal 24.04
|
# Ubuntu Focal (20.04)
|
||||||
|
# FIX: comment corrected from "24.04" to "20.04" (Focal is 20.04; Noble is 24.04)
|
||||||
UBUNTU_FOCAL_URL="https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img"
|
UBUNTU_FOCAL_URL="https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img"
|
||||||
UBUNTU_FOCAL_LOCAL="http://www.ngtech.home/static/cloud-images/focal-server-cloudimg-amd64.img"
|
UBUNTU_FOCAL_LOCAL="http://www.ngtech.home/static/cloud-images/focal-server-cloudimg-amd64.img"
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${UBUNTU_FOCAL_LOCAL}" >/dev/null && UBUNTU_FOCAL_URL="${UBUNTU_FOCAL_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${UBUNTU_FOCAL_LOCAL}" >/dev/null && UBUNTU_FOCAL_URL="${UBUNTU_FOCAL_LOCAL}"
|
||||||
@ -238,7 +270,9 @@ OPENEULER_FILE="${IMAGES_DIR}/openEuler-24.03-LTS-SP3-x86_64.qcow2"
|
|||||||
|
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${OPENEULER_LOCAL}" >/dev/null && OPENEULER_URL="${OPENEULER_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${OPENEULER_LOCAL}" >/dev/null && OPENEULER_URL="${OPENEULER_LOCAL}"
|
||||||
|
|
||||||
if openstack image show "openeuler-2403" >/dev/null 2>&1; then
|
if [ -f "flags/skip_openeuler-2403" ]; then
|
||||||
|
echo "Skipping 'openeuler-2403' (flags/skip_openeuler-2403 present)"
|
||||||
|
elif openstack image show "openeuler-2403" >/dev/null 2>&1; then
|
||||||
echo "Image 'openeuler-2403' already exists — skipping"
|
echo "Image 'openeuler-2403' already exists — skipping"
|
||||||
else
|
else
|
||||||
if [ ! -f "${OPENEULER_FILE}" ]; then
|
if [ ! -f "${OPENEULER_FILE}" ]; then
|
||||||
@ -264,6 +298,7 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# OPNsense 26.1.6 - compressed .bz2 - special handling
|
||||||
OPNSENSE_URL="https://pkg.opnsense.org/releases/26.1.6/OPNsense-26.1.6-nano-amd64.img.bz2"
|
OPNSENSE_URL="https://pkg.opnsense.org/releases/26.1.6/OPNsense-26.1.6-nano-amd64.img.bz2"
|
||||||
OPNSENSE_LOCAL="http://www.ngtech.home/static/cloud-images/OPNsense-26.1.6-nano-amd64.img.bz2"
|
OPNSENSE_LOCAL="http://www.ngtech.home/static/cloud-images/OPNsense-26.1.6-nano-amd64.img.bz2"
|
||||||
OPNSENSE_ARCHIVE="${IMAGES_DIR}/OPNsense-26.1.6-nano-amd64.img.bz2"
|
OPNSENSE_ARCHIVE="${IMAGES_DIR}/OPNsense-26.1.6-nano-amd64.img.bz2"
|
||||||
@ -271,45 +306,50 @@ OPNSENSE_FILE="${IMAGES_DIR}/OPNsense-26.1.6-nano-amd64.img"
|
|||||||
|
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${OPNSENSE_LOCAL}" >/dev/null && OPNSENSE_URL="${OPNSENSE_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${OPNSENSE_LOCAL}" >/dev/null && OPNSENSE_URL="${OPNSENSE_LOCAL}"
|
||||||
|
|
||||||
if openstack image show "opnsense-26.1.6" >/dev/null 2>&1; then
|
if [ -f "flags/skip_opnsense-26.1.6" ]; then
|
||||||
|
echo "Skipping 'opnsense-26.1.6' (flags/skip_opnsense-26.1.6 present)"
|
||||||
|
elif openstack image show "opnsense-26.1.6" >/dev/null 2>&1; then
|
||||||
echo "Image 'opnsense-26.1.6' already exists — skipping"
|
echo "Image 'opnsense-26.1.6' already exists — skipping"
|
||||||
else
|
else
|
||||||
if [ ! -f "${OPNSENSE_FILE}" ]; then
|
if [ ! -f "${OPNSENSE_FILE}" ]; then
|
||||||
if curl --fail --silent --head --location --max-time 12 "${OPNSENSE_URL}" >/dev/null; then
|
if curl --fail --silent --head --location --max-time 12 "${OPNSENSE_URL}" >/dev/null; then
|
||||||
echo "Downloading opnsense archive from ${OPNSENSE_URL}"
|
echo "Downloading OPNsense archive from ${OPNSENSE_URL}"
|
||||||
wget --progress=bar "${OPNSENSE_URL}" -O "${OPNSENSE_ARCHIVE}" || { rm -f "${OPNSENSE_ARCHIVE}"; echo "Download failed"; }
|
wget --progress=bar "${OPNSENSE_URL}" -O "${OPNSENSE_ARCHIVE}" || { rm -f "${OPNSENSE_ARCHIVE}"; echo "Download failed"; }
|
||||||
if [ -f "${OPENEULER_ARCHIVE}" ]; then
|
# FIX: was checking ${OPENEULER_ARCHIVE} instead of ${OPNSENSE_ARCHIVE}
|
||||||
echo "Decompressing opnsense image..."
|
if [ -f "${OPNSENSE_ARCHIVE}" ]; then
|
||||||
|
echo "Decompressing OPNsense image..."
|
||||||
bunzip2 "${OPNSENSE_ARCHIVE}" || { echo "Decompression failed"; rm -f "${OPNSENSE_ARCHIVE}" "${OPNSENSE_FILE}"; }
|
bunzip2 "${OPNSENSE_ARCHIVE}" || { echo "Decompression failed"; rm -f "${OPNSENSE_ARCHIVE}" "${OPNSENSE_FILE}"; }
|
||||||
# mv "${OPNSENSE_ARCHIVE%.bz2}" "${OPNSENSE_FILE}" 2>/dev/null || true
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "opnsense remote not available — skipping"
|
echo "OPNsense remote not available — skipping"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
qemu-img convert -O qcow2 "${OPNSENSE_FILE}" "${OPNSENSE_FILE%.img}.qcow2"
|
|
||||||
|
|
||||||
if [ -f "${OPNSENSE_FILE}" ]; then
|
if [ -f "${OPNSENSE_FILE}" ]; then
|
||||||
openstack image create "opnsense-26.1.6 " \
|
qemu-img convert -O qcow2 "${OPNSENSE_FILE}" "${OPNSENSE_FILE%.img}.qcow2"
|
||||||
|
|
||||||
|
# FIX: removed trailing space from image name "opnsense-26.1.6 " → "opnsense-26.1.6"
|
||||||
|
openstack image create "opnsense-26.1.6" \
|
||||||
--disk-format qcow2 \
|
--disk-format qcow2 \
|
||||||
--container-format bare \
|
--container-format bare \
|
||||||
--file "${OPNSENSE_FILE%.img}.qcow2" \
|
--file "${OPNSENSE_FILE%.img}.qcow2" \
|
||||||
--public || echo "Failed to upload opnsense"
|
--public || echo "Failed to upload OPNsense"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# NethSecurity 8.7.2
|
||||||
# Configuration for NethSecurity 8.7.2
|
# Note: squashfs-combined-efi is an OpenWrt-style image; it will boot but does
|
||||||
|
# not support cloud-init metadata (hostname, SSH key injection, etc.)
|
||||||
NETH_URL="https://updates.nethsecurity.nethserver.org/stable/8.7.2/targets/x86/64/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img.gz"
|
NETH_URL="https://updates.nethsecurity.nethserver.org/stable/8.7.2/targets/x86/64/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img.gz"
|
||||||
NETH_LOCAL="http://www.ngtech.home/static/cloud-images/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img.gz"
|
NETH_LOCAL="http://www.ngtech.home/static/cloud-images/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img.gz"
|
||||||
NETH_ARCHIVE="${IMAGES_DIR}/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img.gz"
|
NETH_ARCHIVE="${IMAGES_DIR}/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img.gz"
|
||||||
NETH_FILE="${IMAGES_DIR}/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img"
|
NETH_FILE="${IMAGES_DIR}/nethsecurity-8.7.2-x86-64-generic-squashfs-combined-efi.img"
|
||||||
|
|
||||||
# Use local mirror if requested and available
|
|
||||||
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${NETH_LOCAL}" >/dev/null && NETH_URL="${NETH_LOCAL}"
|
[ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${NETH_LOCAL}" >/dev/null && NETH_URL="${NETH_LOCAL}"
|
||||||
|
|
||||||
if openstack image show "nethsecurity-8.7.2" >/dev/null 2>&1; then
|
if [ -f "flags/skip_nethsecurity-8.7.2" ]; then
|
||||||
|
echo "Skipping 'nethsecurity-8.7.2' (flags/skip_nethsecurity-8.7.2 present)"
|
||||||
|
elif openstack image show "nethsecurity-8.7.2" >/dev/null 2>&1; then
|
||||||
echo "Image 'nethsecurity-8.7.2' already exists — skipping"
|
echo "Image 'nethsecurity-8.7.2' already exists — skipping"
|
||||||
else
|
else
|
||||||
if [ ! -f "${NETH_FILE}" ]; then
|
if [ ! -f "${NETH_FILE}" ]; then
|
||||||
@ -319,23 +359,20 @@ else
|
|||||||
|
|
||||||
if [ -f "${NETH_ARCHIVE}" ]; then
|
if [ -f "${NETH_ARCHIVE}" ]; then
|
||||||
echo "Decompressing NethSecurity image..."
|
echo "Decompressing NethSecurity image..."
|
||||||
# Using gunzip for .gz files
|
set +e
|
||||||
set +e
|
|
||||||
zcat "${NETH_ARCHIVE}" > "${NETH_FILE}"
|
zcat "${NETH_ARCHIVE}" > "${NETH_FILE}"
|
||||||
set -e
|
set -e
|
||||||
# || { echo "Decompression failed"; rm -f "${NETH_ARCHIVE}" "${NETH_FILE}"; }
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "NethSecurity remote not available — skipping"
|
echo "NethSecurity remote not available — skipping"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Convert to QCOW2 for OpenStack
|
|
||||||
if [ -f "${NETH_FILE}" ]; then
|
if [ -f "${NETH_FILE}" ]; then
|
||||||
echo "Converting image to qcow2..."
|
echo "Converting NethSecurity image to qcow2..."
|
||||||
qemu-img convert -O qcow2 "${NETH_FILE}" "${NETH_FILE%.img}.qcow2"
|
qemu-img convert -O qcow2 "${NETH_FILE}" "${NETH_FILE%.img}.qcow2"
|
||||||
|
|
||||||
echo "Uploading to OpenStack..."
|
echo "Uploading NethSecurity to OpenStack..."
|
||||||
openstack image create "nethsecurity-8.7.2" \
|
openstack image create "nethsecurity-8.7.2" \
|
||||||
--disk-format qcow2 \
|
--disk-format qcow2 \
|
||||||
--container-format bare \
|
--container-format bare \
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user