#!/bin/bash set -Eeuo pipefail if [[ "$UID" -ne 0 ]]; then echo "This command must be run as root!" exit 1 fi if [ "$#" -lt 1 ]; then echo "Usage: $0 [qcow2-target-image]" exit 1 fi TARGET_IMAGE="$1" QCOW2_TARGET_IMAGE="${2:-}" # Parses the target image to get the tag and registry # Example: myregistry.com/myimage:tag -> (myregistry.com/myimage + tag) if [[ "$TARGET_IMAGE" == *":"* ]]; then TARGET_IMAGE_NAME="${TARGET_IMAGE%%:*}" TARGET_IMAGE_TAG="${TARGET_IMAGE##*:}" else TARGET_IMAGE_NAME="$TARGET_IMAGE" TARGET_IMAGE_TAG="latest" TARGET_IMAGE="${IMAGE_NAME}:latest" fi # Compute the qcow2 target image if not provided if [ -z "$QCOW2_TARGET_IMAGE" ]; then QCOW2_TARGET_IMAGE="${TARGET_IMAGE_NAME}-qcow2:${TARGET_IMAGE_TAG}" fi OCI_REGISTRY="${TARGET_IMAGE%%/*}" SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" if [ ! -f "$PROJECT_DIR/signing-key.pass" ]; then openssl rand -base64 30 > "$PROJECT_DIR/signing-key.pass" chmod 600 "$PROJECT_DIR/signing-key.pass" fi if [ ! -f "$PROJECT_DIR/signing-key.pub" ]; then skopeo generate-sigstore-key --output-prefix "$PROJECT_DIR/signing-key" --passphrase-file "$PROJECT_DIR/signing-key.pass" fi if [ ! -f "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" ]; then tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <