|
|
|
@ -59,13 +59,6 @@ function parse_options { |
|
|
|
[[ -n $CONTAINER ]] || (usage && exit 1) |
|
|
|
} |
|
|
|
|
|
|
|
function create { |
|
|
|
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 start "$CONTAINER" |
|
|
|
customize_host "$CONTAINER" |
|
|
|
} |
|
|
|
|
|
|
|
function mount_miaou_bash { |
|
|
|
printenv MIAOU_BASH_DIR > /dev/null || (echo >&2 "Warn: environment variable MIAOU_BASH_DIR is missing!" && return) |
|
|
|
|
|
|
|
@ -80,13 +73,13 @@ function mount_miaou_bash { |
|
|
|
function build_sandbox_project { |
|
|
|
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 |
|
|
|
incus --project $PROJECT_SANDBOX profile device add default root disk path=/ pool=default |
|
|
|
incus --project $PROJECT_SANDBOX profile device add default eth0 nic name=eth0 network=incusbr0 |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function refresh_template { |
|
|
|
if ! incus --project "$PROJECT_SANDBOX" info "$TEMPLATE_SANDBOX" | grep '^Status: RUNNING'; then |
|
|
|
if incus --project "$PROJECT_SANDBOX" info "$TEMPLATE_SANDBOX" | grep '^Status: STOPPED'; then |
|
|
|
incus --project "$PROJECT_SANDBOX" start "$TEMPLATE_SANDBOX" |
|
|
|
fi |
|
|
|
incus --project "$PROJECT_SANDBOX" exec "$TEMPLATE_SANDBOX" -- bash << EOF |
|
|
|
@ -150,11 +143,21 @@ function assert_not_sandboxing { |
|
|
|
|| true |
|
|
|
} |
|
|
|
|
|
|
|
function create { |
|
|
|
if incus --project "$PROJECT_SANDBOX" info "$TEMPLATE_SANDBOX" | grep '^Status: RUNNING'; then |
|
|
|
incus --project "$PROJECT_SANDBOX" stop "$TEMPLATE_SANDBOX" |
|
|
|
fi |
|
|
|
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 config unset "$CONTAINER" volatile.eth0.hwaddr |
|
|
|
incus start "$CONTAINER" |
|
|
|
customize_host "$CONTAINER" |
|
|
|
} |
|
|
|
|
|
|
|
# MAIN |
|
|
|
|
|
|
|
set -Eue |
|
|
|
parse_options "$@" |
|
|
|
|
|
|
|
assert_not_sandboxing |
|
|
|
prepare_template_for_quick_creation |
|
|
|
create |
|
|
|
|