Browse Source

create not yet finalized, hangs on first login

main
pvincent 3 weeks ago
parent
commit
51566433c0
  1. 23
      tools/miaou-create

23
tools/miaou-create

@ -60,27 +60,35 @@ function parse_options {
} }
function create { function create {
incus --project "$PROJECT_SANDBOX" copy "$TEMPLATE_SANDBOX" "$CONTAINER" --target-project $(incus project get-current)
incus --project "$PROJECT_SANDBOX" copy --instance-only --refresh "$TEMPLATE_SANDBOX" "$CONTAINER" --target-project $(incus project get-current)
incus file delete "$CONTAINER/etc/machine-id" incus file delete "$CONTAINER/etc/machine-id"
incus start "$CONTAINER" incus start "$CONTAINER"
customize_host "$CONTAINER" customize_host "$CONTAINER"
} }
function mount_miaou_bash { function mount_miaou_bash {
[[ -v MIAOU_BASH_DIR ]] && echo >&2 "Warn: variable MIAOU_BASH_DIR missing!" && return
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:-} local optional_project=${2:-}
[[ -n $optional_project ]] && optional_project="--project $optional_project" [[ -n $optional_project ]] && optional_project="--project $optional_project"
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 $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 $optional_project config set $target environment.PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/miaou-bash/tools incus $optional_project config set $target environment.PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/miaou-bash/tools
} }
function build_sandbox_project { function build_sandbox_project {
incus project show $PROJECT_SANDBOX > /dev/null || incus project create $PROJECT_SANDBOX
if ! incus project show $PROJECT_SANDBOX > /dev/null; then
incus project create $PROJECT_SANDBOX
incus profile device add default root disk path=/ pool=default --project $PROJECT_SANDBOX
incus profile device add default eth0 nic name=eth0 network=incusbr0 --project $PROJECT_SANDBOX
fi
} }
function refresh_template { function refresh_template {
incus --project "$PROJECT_SANDBOX" start "$TEMPLATE_SANDBOX"
if ! incus --project "$PROJECT_SANDBOX" info "$TEMPLATE_SANDBOX" | grep '^Status: RUNNING'; then
incus --project "$PROJECT_SANDBOX" start "$TEMPLATE_SANDBOX"
fi
incus --project "$PROJECT_SANDBOX" exec "$TEMPLATE_SANDBOX" -- bash << EOF incus --project "$PROJECT_SANDBOX" exec "$TEMPLATE_SANDBOX" -- bash << EOF
apt-get update apt-get update
apt-get dist-upgrade -y apt-get dist-upgrade -y
@ -94,7 +102,8 @@ EOF
function build_template_from_scratch { function build_template_from_scratch {
build_sandbox_project build_sandbox_project
echo "building image from scratch..."
echo "building template from scratch..."
incus --project "$PROJECT_SANDBOX" launch "$MIAOU_IMAGE" "$TEMPLATE_SANDBOX"
incus --project "$PROJECT_SANDBOX" file delete "$TEMPLATE_SANDBOX"/etc/apt/sources.list incus --project "$PROJECT_SANDBOX" file delete "$TEMPLATE_SANDBOX"/etc/apt/sources.list
incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs /etc/apt/sources.list.d/debian.sources "$TEMPLATE_SANDBOX"/etc/apt/sources.list.d/debian.sources incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs /etc/apt/sources.list.d/debian.sources "$TEMPLATE_SANDBOX"/etc/apt/sources.list.d/debian.sources
cat << EOF | incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs - "$TEMPLATE_SANDBOX"/etc/systemd/resolved.conf.d/10-disable-ipv4-listener.conf cat << EOF | incus --project "$PROJECT_SANDBOX" file push --uid 0 --gid 0 --mode 644 --create-dirs - "$TEMPLATE_SANDBOX"/etc/systemd/resolved.conf.d/10-disable-ipv4-listener.conf
@ -103,10 +112,8 @@ LLMNR=no
DNSStubListener=no DNSStubListener=no
EOF EOF
mount_miaou_bash "$TEMPLATE_SANDBOX" "$PROJECT_SANDBOX" mount_miaou_bash "$TEMPLATE_SANDBOX" "$PROJECT_SANDBOX"
incus --project "$PROJECT_SANDBOX" create "$MIAOU_IMAGE" "$TEMPLATE_SANDBOX"
refresh_template refresh_template
echo "image:"$TEMPLATE_SANDBOX" from project:$PROJECT_SANDBOX built successfully!"
echo "template:"$TEMPLATE_SANDBOX" from project:$PROJECT_SANDBOX built successfully!"
} }
function prepare_template_for_quick_creation { function prepare_template_for_quick_creation {

Loading…
Cancel
Save