Skip to main content

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-run faz detecção, perguntas e plano sem downloads ou alterações.
  • install descarta estado, cache e autostart temporários anteriores e começa uma execução nova; use resume quando quiser continuar uma execução interrompida.
  • resume recupera módulos interrompidos e executa as verificações pós-boot.
  • support-bundle cria um .tar.zst local; nada é enviado.
  • cleanup remove 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 0600 em ~/.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 up abre a porta 22 somente para a sub-rede da rota padrão e persiste até sudo lan-ssh down; --interface escolhe 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vcanonici_autoinstall-2.0.0.tar.gz (296.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vcanonici_autoinstall-2.0.0-py3-none-any.whl (312.7 kB view details)

Uploaded Python 3

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

Hashes for vcanonici_autoinstall-2.0.0.tar.gz
Algorithm Hash digest
SHA256 5fa79ac666bf42e0528850d4e2a548bc18fb04868d2f42b69b01ce21f7614e46
MD5 19f94ed7d9c9a1018d8713bdee98b99c
BLAKE2b-256 f2fe8ecee221ab347b4747e8e9eef0f38dcd88bcffcfee90687bb023ddea9ba1

See more details on using hashes here.

File details

Details for the file vcanonici_autoinstall-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for vcanonici_autoinstall-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 408fff7b541236d2dcb1140110c02eae432fc4f60d71b4e30bdf419863c1ba23
MD5 960faa294fb653438fa7475b669b4af2
BLAKE2b-256 8482e2fa804773bca18957e5670139096fbed0bbdd279b7df7def725c363bb1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page