Browse Source

fixed miaou-create template

main
pvincent 5 days ago
parent
commit
37b1071a95
  1. 51
      tools/miaou-create

51
tools/miaou-create

@ -2,15 +2,11 @@
# CONSTANTS # CONSTANTS
BASEDIR=$(dirname "$0")
MIAOU_IMAGE=images:debian/13 MIAOU_IMAGE=images:debian/13
APT_ARCHIVES=/var/cache/apt/archives
PROJECT_SANDBOX=sandbox PROJECT_SANDBOX=sandbox
TEMPLATE_SANDBOX=miaou-debian13-template TEMPLATE_SANDBOX=miaou-debian13-template
TEMPLATE_REFRESH_DELAY="7 days"
TEMPLATE_REFRESH_DELAY='7 days'
BARE_MINIMAL=false BARE_MINIMAL=false
CONTAINER=
# FUNCTIONS # FUNCTIONS
@ -43,51 +39,47 @@ function humanize_ago {
function parse_options { function parse_options {
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
--help | -h)
usage && exit 0
;;
--bare-minimal)
BARE_MINIMAL=true
;;
--help | -h) usage && exit 0 ;;
--bare-minimal) BARE_MINIMAL=true ;;
*) *)
if [[ -z $CONTAINER ]]; then
if [[ ! -v CONTAINER ]]; then
CONTAINER=$1 CONTAINER=$1
else else
echo >&2 "Unknown option: $1" && usage && exit 2 echo >&2 "Unknown option: $1" && usage && exit 2
fi fi
;; ;;
esac esac
shift 1 # Move to the next argument
shift
done done
[[ -n $CONTAINER ]] || (usage && exit 1)
if [[ ! -v CONTAINER ]]; then
usage
exit 1
fi
} }
function mount_miaou_bash { function mount_miaou_bash {
printenv MIAOU_BASH_DIR >/dev/null || (echo >&2 "Warn: environment variable MIAOU_BASH_DIR is missing!" && return)
local target="$1" local target="$1"
local optional_project=${2:-}
[[ -n $optional_project ]] && optional_project="--project $optional_project"
local options=()
[[ -v 2 ]] && options+=(--project "$2")
incus $optional_project config device add $target MIAOU-BASH disk source=$MIAOU_BASH_DIR path=/opt/miaou-bash readonly=true | grep -q 'Device MIAOU-BASH added'
incus "${options[@]}" config device add "$target" MIAOU-BASH disk \
source="$MIAOU_BASH_DIR" path=/opt/miaou-bash readonly=true |
grep -q 'Device MIAOU-BASH added'
} }
function assign_host_zoneinfo { function assign_host_zoneinfo {
local target="$1" local target="$1"
local optional_project=${2:-}
[[ -n $optional_project ]] && optional_project="--project $optional_project"
local options=()
[ -v 2 ] && options+=(--project "$2")
local host_zoneinfo local host_zoneinfo
host_zoneinfo=$(realpath /etc/localtime) host_zoneinfo=$(realpath /etc/localtime)
echo "assign ZONEINFO from host: $host_zoneinfo" echo "assign ZONEINFO from host: $host_zoneinfo"
# TODO:optional_project might be an array, "${optional_project[@]}"
incus exec $optional_project "$target" -- bash <<-EOF
ln -fs "$host_zoneinfo" /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
incus exec "${options[@]}" "$target" -- bash <<-EOF
ln -fs "$host_zoneinfo" /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
EOF EOF
} }
function build_sandbox_project { function build_sandbox_project {
@ -107,14 +99,13 @@ function refresh_template {
cat <<EOF cat <<EOF
apt-get update apt-get update
apt-get dist-upgrade -y apt-get dist-upgrade -y
apt-get install -y curl
MIAOU_BASH_DIR=/opt/miaou-bash MIAOU_BASH_DIR=/opt/miaou-bash
export MIAOU_BASH_DIR export MIAOU_BASH_DIR
"\$MIAOU_BASH_DIR"/bin/miaou-bash --initiate
/opt/miaou-bash/bin/miaou-bash /opt/miaou-bash/lib/initiate.bash
EOF EOF
) )
incus --project "$PROJECT_SANDBOX" exec "$TEMPLATE_SANDBOX" -- bash -c "$script"
incus --project "$PROJECT_SANDBOX" exec "$TEMPLATE_SANDBOX" -- bash -lc "$script"
incus --project "$PROJECT_SANDBOX" stop "$TEMPLATE_SANDBOX" incus --project "$PROJECT_SANDBOX" stop "$TEMPLATE_SANDBOX"
local image_date local image_date

Loading…
Cancel
Save