From 1ed33bbc502e060e2d70fb25e61c2c30922740fb Mon Sep 17 00:00:00 2001 From: Eliezer Croitoru Date: Fri, 8 May 2026 14:23:41 +0300 Subject: [PATCH] 6 --- install.sh | 5 ++ openstack-flavours-and-images.sh | 86 +++++++++++++++++++++++++++++++- 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 9e72ee7..43e0b86 100755 --- a/install.sh +++ b/install.sh @@ -5,8 +5,11 @@ set -xe # Added -e to stop execution if a command fails # Defaults FIRST_INTERFACE="${1:-enp1s0}" + +# enentually will be physnet1 in open stack networks EXTERNAL_INTERFACE="${2:-enp3s0}" + # this should not be pingable in the installtion INTERNAL_IP="${3:-192.168.220.245}" @@ -81,10 +84,12 @@ sed -i "s@^#kolla_internal_vip_address:.*@kolla_internal_vip_address: \"${INTERN # Enable Keystone/Horizon by default (often needed for a working UI) sed -i "s@^#enable_horizon:.*@enable_horizon: \"yes\"@g" "${GLOBALS_FILENAME}" + sed -i "s@^#enable_cinder:.*@enable_cinder: yes@g" "${GLOBALS_FILENAME}" #sed -i "s@^#enable_cinder_backend_nfs:.*@enable_cinder_backend_nfs: true@g" "${GLOBALS_FILENAME}" sed -i "s@^#enable_cinder_backend_lvm:.*@enable_cinder_backend_lvm: true@g" "${GLOBALS_FILENAME}" sed -i "s@^#cinder_volume_group:.*@cinder_volume_group: \"cinder-volumes\"@g" "${GLOBALS_FILENAME}" + sed -i "s@^#enable_valkey:.*@enable_valkey: true@g" "${GLOBALS_FILENAME}" # to allow load balancer diff --git a/openstack-flavours-and-images.sh b/openstack-flavours-and-images.sh index 1a60382..e03c30e 100755 --- a/openstack-flavours-and-images.sh +++ b/openstack-flavours-and-images.sh @@ -79,6 +79,7 @@ else openstack flavor show 2v1g10g || openstack flavor create --vcpus 2 --ram 1024 --disk 10 2v1g10g openstack flavor show 2v2g10g || openstack flavor create --vcpus 2 --ram 2048 --disk 10 2v2g10g openstack flavor show 4v2g10g || openstack flavor create --vcpus 4 --ram 2048 --disk 10 4v2g10g + openstack flavor show 2v4g20g || openstack flavor create --vcpus 2 --ram 4096 --disk 20 2v4g20g openstack flavor show 1v1g20g || openstack flavor create --vcpus 1 --ram 1024 --disk 20 1v1g20g openstack flavor show 1v2g20g || openstack flavor create --vcpus 1 --ram 2048 --disk 20 1v2g20g @@ -203,13 +204,13 @@ upload_image_if_needed "debian-13" "${IMAGES_DIR}/debian-13-generic-amd64.qcow2" 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" [ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${UBUNTU_JAMMY_LOCAL}" >/dev/null && UBUNTU_JAMMY_URL="${UBUNTU_JAMMY_LOCAL}" -upload_image_if_needed "ubuntu-noble" "${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_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" [ "$USE_LOCAL" = true ] && curl --fail --silent --head --location "${UBUNTU_FOCAL_LOCAL}" >/dev/null && UBUNTU_FOCAL_URL="${UBUNTU_FOCAL_LOCAL}" -upload_image_if_needed "ubuntu-noble" "${IMAGES_DIR}/focal-server-cloudimg-amd64.img" "${UBUNTU_FOCAL_URL}" +upload_image_if_needed "ubuntu-focal" "${IMAGES_DIR}/focal-server-cloudimg-amd64.img" "${UBUNTU_FOCAL_URL}" # Ubuntu Noble (24.04) UBUNTU_NOBLE_URL="https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img" @@ -263,6 +264,87 @@ else fi fi +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_ARCHIVE="${IMAGES_DIR}/OPNsense-26.1.6-nano-amd64.img.bz2" +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}" + +if openstack image show "opnsense-26.1.6" >/dev/null 2>&1; then + echo "Image 'opnsense-26.1.6' already exists — skipping" +else + if [ ! -f "${OPNSENSE_FILE}" ]; then + if curl --fail --silent --head --location --max-time 12 "${OPNSENSE_URL}" >/dev/null; then + echo "Downloading opnsense archive from ${OPNSENSE_URL}" + wget --progress=bar "${OPNSENSE_URL}" -O "${OPNSENSE_ARCHIVE}" || { rm -f "${OPNSENSE_ARCHIVE}"; echo "Download failed"; } + if [ -f "${OPENEULER_ARCHIVE}" ]; then + echo "Decompressing opnsense image..." + bunzip2 "${OPNSENSE_ARCHIVE}" || { echo "Decompression failed"; rm -f "${OPNSENSE_ARCHIVE}" "${OPNSENSE_FILE}"; } +# mv "${OPNSENSE_ARCHIVE%.bz2}" "${OPNSENSE_FILE}" 2>/dev/null || true + fi + else + echo "opnsense remote not available — skipping" + fi + fi + + qemu-img convert -O qcow2 "${OPNSENSE_FILE}" "${OPNSENSE_FILE%.img}.qcow2" + + if [ -f "${OPNSENSE_FILE}" ]; then + openstack image create "opnsense-26.1.6 " \ + --disk-format qcow2 \ + --container-format bare \ + --file "${OPNSENSE_FILE%.img}.qcow2" \ + --public || echo "Failed to upload opnsense" + fi +fi + + +# Configuration for NethSecurity 8.7.2 +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_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" + +# Use local mirror if requested and available +[ "$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 + echo "Image 'nethsecurity-8.7.2' already exists — skipping" +else + if [ ! -f "${NETH_FILE}" ]; then + if curl --fail --silent --head --location --max-time 12 "${NETH_URL}" >/dev/null; then + echo "Downloading NethSecurity archive from ${NETH_URL}" + wget --progress=bar "${NETH_URL}" -O "${NETH_ARCHIVE}" || { rm -f "${NETH_ARCHIVE}"; echo "Download failed"; } + + if [ -f "${NETH_ARCHIVE}" ]; then + echo "Decompressing NethSecurity image..." + # Using gunzip for .gz files + set +e + zcat "${NETH_ARCHIVE}" > "${NETH_FILE}" + set -e + # || { echo "Decompression failed"; rm -f "${NETH_ARCHIVE}" "${NETH_FILE}"; } + fi + else + echo "NethSecurity remote not available — skipping" + fi + fi + + # Convert to QCOW2 for OpenStack + if [ -f "${NETH_FILE}" ]; then + echo "Converting image to qcow2..." + qemu-img convert -O qcow2 "${NETH_FILE}" "${NETH_FILE%.img}.qcow2" + + echo "Uploading to OpenStack..." + openstack image create "nethsecurity-8.7.2" \ + --disk-format qcow2 \ + --container-format bare \ + --file "${NETH_FILE%.img}.qcow2" \ + --property hw_firmware_type=uefi \ + --public || echo "Failed to upload NethSecurity" + fi +fi + # Keypair (unchanged) openstack keypair show multi || openstack keypair create --public-key multi.pub multi