Provisionamento interativo, tipado e retomável de máquinas Ubuntu
Project description
VCanonici Autoinstall 2.0
Provisionamento interativo e retomável para Ubuntu 24.04 Desktop amd64 recém-instalado.
A distribuição pública única é vcanonici-autoinstall; o tipo faz parte da CLI:
autoinstall --t workstation.
A versão 2.0.0 não é um autoinstall do instalador Ubuntu/NoCloud. Ela configura a workstation depois do primeiro login de um usuário comum membro de
sudo.
Instalação
Copie o bloco inteiro no Terminal da máquina. Ele pede sudo uma vez, mantém o ticket
apenas enquanto estiver ativo e substitui qualquer runtime antigo pela versão mais
recente já publicada no PyPI. Se o download ou a instalação falhar, o runtime anterior
é restaurado e a CLI não é executada:
#!/bin/sh
(
set -eu
PACKAGE="vcanonici-autoinstall"
BASE="$HOME/.local/share/vcanonici-autoinstall"
RUNTIME="$BASE/workstation"
BACKUP="$BASE/workstation.backup"
runtime_ready=0
keepalive_pid=""
# shellcheck disable=SC2317,SC2329 # Invoked indirectly by the EXIT trap.
cleanup() {
exit_code=$?
trap - EXIT HUP INT TERM
if [ "$runtime_ready" -ne 1 ]; then
rm -rf -- "$RUNTIME"
if [ -d "$BACKUP" ]; then
mv -- "$BACKUP" "$RUNTIME"
fi
fi
if [ -n "$keepalive_pid" ]; then
kill "$keepalive_pid" 2>/dev/null || true
fi
sudo -k
exit "$exit_code"
}
trap cleanup EXIT
trap 'exit 130' HUP INT TERM
mkdir -p -- "$BASE"
if [ -d "$BACKUP" ]; then
if [ -f "$RUNTIME/.autoinstall-ready" ]; then
rm -rf -- "$BACKUP"
else
rm -rf -- "$RUNTIME"
mv -- "$BACKUP" "$RUNTIME"
fi
fi
sudo -v
while true; do
sudo -n true
sleep 50
done &
keepalive_pid=$!
sudo systemctl unmask packagekit.service >/dev/null 2>&1 || true
sudo apt-get -o Acquire::Retries=5 -o DPkg::Lock::Timeout=300 update
sudo apt-get -o Acquire::Retries=5 -o DPkg::Lock::Timeout=300 -y install python3-venv
if [ -d "$RUNTIME" ]; then
mv -- "$RUNTIME" "$BACKUP"
fi
python3 -m venv "$RUNTIME"
"$RUNTIME/bin/python" -m pip install --no-cache-dir --upgrade pip
"$RUNTIME/bin/python" -m pip install --no-cache-dir --upgrade "$PACKAGE"
installed_version=$("$RUNTIME/bin/python" -c \
'from importlib.metadata import version; print(version("vcanonici-autoinstall"))')
test -n "$installed_version"
test -x "$RUNTIME/bin/autoinstall"
touch "$RUNTIME/.autoinstall-ready"
runtime_ready=1
rm -rf -- "$BACKUP"
find "$BASE" -mindepth 1 -maxdepth 1 -type d -name 'workstation-*' \
-exec rm -rf -- {} +
printf 'VCanonici Autoinstall %s instalado em %s\n' "$installed_version" "$RUNTIME"
"$RUNTIME/bin/autoinstall" --t workstation install
)
Se Python e pip já estiverem disponíveis em um ambiente gravável, também funciona:
python -m pip install vcanonici-autoinstall
autoinstall --t workstation
No Ubuntu limpo, prefira o bootstrap acima: ele cria um venv isolado. A CLI roda como usuário comum e eleva somente comandos que alteram o sistema.
Comandos
autoinstall --t workstation install [--dry-run] [--yes] [--no-reboot]
autoinstall --t workstation resume [--yes] [--no-reboot]
autoinstall --t workstation status
autoinstall --t workstation report
autoinstall --t workstation support-bundle
autoinstall --t workstation cleanup
autoinstall --version
--dry-runfaz detecção, perguntas e plano sem downloads ou alterações.installdescarta estado, cache e autostart temporários anteriores e começa uma execução nova; useresumequando quiser continuar uma execução interrompida.resumerecupera módulos interrompidos e executa as verificações pós-boot.support-bundlecria um.tar.zstlocal; nada é enviado.cleanupremove runtime temporário, estado, caches e autostart. Aplicativos,lan-ssh, relatório, logs e bundle são preservados.
Exit codes: 0 sucesso, 2 parcial, 10 ambiente não suportado, 20 pausado e
retomável, 30 falha crítica da CLI.
Segurança operacional
- Suporte exclusivo a Ubuntu 24.04 Desktop amd64, GNOME e usuário comum em
sudo. - Estado atômico
0600em~/.local/state/vcanonici-autoinstall/workstation/state.json. - Cada comando, stdout e stderr aparece em tempo real no terminal e é gravado literalmente
em
~/.local/state/vcanonici-autoinstall/workstation/runs/<runId>/; os dados permanecem locais e devem ser protegidos como dados sensíveis da máquina. - Nenhuma telemetria, upload, credencial de aplicativo ou chave PyPI.
- APT usa canais estáveis assinados. Discord, Telegram, Windscribe, Codex e Unsloth usam URLs, tamanhos e SHA-256 congelados no manifesto; ausência ou divergência pausa por padrão.
- SSH termina fechado, inclusive
ssh.socket.sudo lan-ssh upabre a porta 22 somente para a sub-rede da rota padrão e persiste atésudo lan-ssh down;--interfaceescolhe outra interface. - O grupo Docker equivale a acesso root.
- Atualizações automáticas de segurança do Ubuntu permanecem habilitadas.
Os blobs Realtek do MA530 têm autorização de redistribuição, checksums fixos e licença
separada em REALTEK-NOTICE.md. O instalador nunca substitui o
btusb assinado do Ubuntu e não usa DKMS.
Desenvolvimento
python3.12 -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[dev]'
ruff check .
mypy src tests
pytest
python -m build
SOURCE_DATE_EPOCH=1784073600 python scripts/normalize_sdist.py dist/*.tar.gz
twine check dist/*
python scripts/inspect_distribution.py dist/*
shellcheck bootstrap.sh src/vcanonici_autoinstall_workstation/assets/lan-ssh
A arquitetura e o fluxo operacional estão em docs/architecture.md. A publicação sem tokens está descrita em docs/publishing.md.
Limites de aceitação
CI e testes simulam APT, systemd, GNOME, downloads e retomada. Antes de declarar a 2.0.0 estável, valide numa VM Ubuntu 24.04 sem GPU e depois na máquina-alvo com RTX, MA530 e múltiplos monitores. Preserve o bundle dessa execução como evidência.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vcanonici_autoinstall-2.0.0.tar.gz.
File metadata
- Download URL: vcanonici_autoinstall-2.0.0.tar.gz
- Upload date:
- Size: 296.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fa79ac666bf42e0528850d4e2a548bc18fb04868d2f42b69b01ce21f7614e46
|
|
| MD5 |
19f94ed7d9c9a1018d8713bdee98b99c
|
|
| BLAKE2b-256 |
f2fe8ecee221ab347b4747e8e9eef0f38dcd88bcffcfee90687bb023ddea9ba1
|
File details
Details for the file vcanonici_autoinstall-2.0.0-py3-none-any.whl.
File metadata
- Download URL: vcanonici_autoinstall-2.0.0-py3-none-any.whl
- Upload date:
- Size: 312.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
408fff7b541236d2dcb1140110c02eae432fc4f60d71b4e30bdf419863c1ba23
|
|
| MD5 |
960faa294fb653438fa7475b669b4af2
|
|
| BLAKE2b-256 |
8482e2fa804773bca18957e5670139096fbed0bbdd279b7df7def725c363bb1d
|