Pular para conteúdo

Instalações autônomas

A ISO do OmarOS pode se instalar sozinha, sem ninguém no teclado. Se o instalador encontrar um segundo disco rotulado cidata carregando seus arquivos de configuração, ele os copia, pula completamente o assistente de configuração e reinicia no sistema pronto por conta própria. Sem uma compilação especial da ISO, sem uma entrada extra no menu de boot — sem esse disco conectado, nada muda e você tem o assistente normal.

Isso torna o OmarOS ótimo como imagem base para ambientes de desenvolvimento descartáveis: crie uma VM no Proxmox ou com o Packer, inicialize-a, vá embora, entre por SSH. cidata é o rótulo NoCloud do cloud-init, então todas as ferramentas comuns de virtualização já sabem como conectar um disco assim.

Os arquivos de configuração

Os arquivos são exatamente o que o próprio assistente do instalador escreve, então a maneira mais fácil de obter um conjunto inicial é executar uma instalação interativa (em uma VM, digamos) e copiar o que ele escreveu em /root:

Arquivo Obrigatório Finalidade
user_configuration.json Sim Disco, hostname, fuso horário, teclado
user_credentials.json Sim Nome de usuário e hash da senha
user_full_name.txt Não Nome completo no Git
user_email_address.txt Não E-mail do Git
user_encrypt_installation.txt Não true quando a configuração carrega um bloco disk_encryption
authorized_keys Não Chaves públicas SSH, uma por linha
tailscale_authkey Não Chave de autenticação do Tailscale para entrar na sua tailnet na primeira inicialização

Gere o hash da senha para user_credentials.json com openssl passwd -6 "yourpassword".

Você também pode colocar um arquivo vazio chamado defer-provisioning no lugar de user_credentials.json. Isso executa a mesma instalação preparada para outro dono que você pode acionar interativamente: a máquina é instalada sem nenhum dado pessoal, e quem a inicializar primeiro escolhe seu teclado e cria seu usuário. Esse é o modo para plataformas de geração de imagem, onde o disco não deve carregar as credenciais de ninguém.

Acesso SSH

Quando authorized_keys está presente, a instalação configura as chaves como o ~/.ssh/authorized_keys do usuário, ativa o sshd e abre o firewall para ele. (Uma instalação padrão do OmarOS traz o openssh com o serviço desativado e a porta fechada, então uma máquina autônoma ficaria inacessível de outra forma.) A instalação só adiciona suas chaves — ela não afrouxa nenhuma das outras configurações de autenticação do daemon SSH.

Quando tailscale_authkey está presente, a máquina entra na sua tailnet na primeira inicialização em vez disso: o Tailscale é instalado a partir dos pacotes incluídos na ISO, o firewall permite a interface da tailnet, e um trabalho em segundo plano executa a entrada assim que a máquina realmente tem rede, tentando de novo até conseguir. Use uma chave reutilizável e pré-autorizada para que uma imagem de disco possa servir a muitas máquinas.

Construindo o disco cidata

Qualquer sistema de arquivos com o rótulo certo funciona. Uma ISO minúscula é o caminho fácil:

mkdir cidata
cp user_configuration.json user_credentials.json authorized_keys cidata/
genisoimage -output cidata.iso -volid cidata -joliet -rock cidata/

Depois conecte-a à VM ao lado da ISO do OmarOS. Aqui está um exemplo completo no Proxmox:

qm create 101 --name my-omaros \
  --bios ovmf --machine q35 --cpu host --cores 4 --memory 8192 \
  --ostype l26 --scsihw virtio-scsi-single \
  --efidisk0 local-lvm:0,efitype=4m,pre-enrolled-keys=0 \
  --scsi0 local-lvm:40,discard=on,iothread=1 \
  --net0 virtio,bridge=vmbr0 --vga virtio --serial0 socket \
  --ide2 local:iso/omaros.iso,media=cdrom \
  --ide3 local:iso/cidata.iso,media=cdrom \
  --boot order='scsi0;ide2'

qm start 101

A ordem de boot lista o disco primeiro de propósito: o disco vazio cai para a ISO na primeira inicialização, e o sistema instalado inicializa do disco para sempre depois disso.

Dois avisos

Instalações autônomas criptografadas não são totalmente autônomas — alguém ainda precisa digitar a senha do LUKS na primeira inicialização. E o bloco disk_encryption em user_configuration.json carrega essa senha em texto simples, então trate um disco cidata construído a partir de uma instalação criptografada como o segredo que ele é.