36 lines
1.1 KiB
Bash
Executable File
36 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
output="${1:-${script_dir}/seed.iso}"
|
|
files=(user-data meta-data)
|
|
|
|
mkdir -p "$(dirname -- "$output")"
|
|
|
|
if [[ -f "${script_dir}/network-config" ]]; then
|
|
files+=(network-config)
|
|
fi
|
|
|
|
if command -v cloud-localds >/dev/null 2>&1; then
|
|
args=()
|
|
if [[ -f "${script_dir}/network-config" ]]; then
|
|
args+=(--network-config="${script_dir}/network-config")
|
|
fi
|
|
cloud-localds "${args[@]}" "$output" \
|
|
"${script_dir}/user-data" "${script_dir}/meta-data"
|
|
elif command -v xorriso >/dev/null 2>&1; then
|
|
xorriso -as mkisofs -quiet -volid cidata -joliet -rock \
|
|
-output "$output" "${files[@]/#/${script_dir}/}"
|
|
elif command -v genisoimage >/dev/null 2>&1; then
|
|
genisoimage -quiet -output "$output" -volid cidata -joliet -rock \
|
|
"${files[@]/#/${script_dir}/}"
|
|
elif command -v mkisofs >/dev/null 2>&1; then
|
|
mkisofs -quiet -output "$output" -volid cidata -joliet -rock \
|
|
"${files[@]/#/${script_dir}/}"
|
|
else
|
|
printf 'Error: install cloud-image-utils, xorriso, genisoimage, or mkisofs.\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
printf 'Created %s\n' "$output"
|