No momento, estou tentando automatizar a criação do modelo Debian 11 por meio do ambiente Packer for Nutanix e preciso de alguns conselhos sobre como pré-configurar/automatizar a instalação do Debian.
Em primeiro lugar, depois de ler esta bíblia https://www.debian.org/releases/stable/amd64/apbs02.fr.html , comecei a usar o arquivo preseed.cfg. Comecei com o arquivo preseed.cfg fornecido pelo Debian e depois adaptei algumas coisas para atender às minhas necessidades. Por fim, valido a sintaxe usando debconf-set-selections -c preseed.cfg
comando => está tudo bem.
Agora, vi que existem 3 maneiras diferentes de usar o preseed.cfg :
- através do initrd: parece bastante difícil para mim e não encontrei um tutorial/documentação fácil
- pela rede: não é uma opção neste momento devido a alguma restrição de firewall
- através do arquivo : parece a opção mais fácil e melhor no momento
Quando o Packer inicia a criação da VM, ele carrega o debian ISO como um CD-ROM na 1ª posição e um disco virtual vazio na segunda posição. Eu digo ao empacotador para carregar meus scripts preseed.cfg como um cd-rom, portanto, do ponto de vista do hipervisor, uma segunda unidade de cd-rom é montada na 3ª posição.
MAS, neste caso, a VM inicializa em ISO (cd-rom 1ª posição), ela não monta o segundo drive de cd-rom que contém o arquivo preseed.cfg e não consigo acessá-lo a menos que vá ao console debian em seguida, monte a segunda unidade.
Eu vi um fórum sobre como carregar preseed.cfg na minha pasta debian.iso original e modificar o arquivo /isolinux/txt.cfg assim (e então recriar o iso com OSCDIMG):
label install
menu label ^Install
kernel /install.amd/vmlinuz
append vga=788 initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed/preseed.cfg --- quiet
Minha pergunta é: é justo agir assim? há algo que eu perdi ou algo mais fácil para fazê-lo funcionar facilmente?
EDIT: tentei o método initrd, a única coisa que resta é que tenho que selecionar manualmente a instalação automatizada. Como se livrar dessa ação?
EDIT2: 02-01-2023
- eu tentei mais 2 coisas diferentes, 1º tendo esta linha em isolinux/txt.cfg
append auto=true priority=critical vga=788 initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed.cfg --- quiet
=> NOK, ele ainda inicializa no menu de inicialização (mas ok se eu selecionar a instalação automatizada manualmente, significa que preseed.cfg funciona muito bem) - e 2º, teste com
prompt 1 timeout 1
em isolinux.cfg => vai direto para selecionar o idioma manualmente...
EDIT3: 03-01-2023 aqui está o preseed.cfg que eu uso:
# SETUP AUTO MODE
d-i auto-install/enable boolean true
d-i debconf/priority select critical
# LANGUAGE & KEYMAP
d-i debian-installer/locale string fr_FR
d-i keyboard-configuration/xkb-keymap select fr(latin9)
# NETWORK
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string template-debian-11-x64
d-i netcfg/get_domain string my_domain.net
d-i netcfg/hostname string template-debian-11-x64
# MIRRORS
d-i mirror/http/hostname string http://deb.debian.org/debian/
d-i mirror/http/hostname string http://security.debian.org/debian-security
# ACCOUNTS
d-i passwd/root-password password mypassword!
d-i passwd/root-password-again password mypassword!
d-i passwd/user-fullname string user
d-i passwd/username string user
d-i passwd/user-password password mypassword!
d-i passwd/user-password-again password mypassword!
d-i passwd/user-uid string 1010
d-i passwd/user-default-groups string si audio cdrom video
# LVM PART
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string 95%
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto/choose_recipe select multi
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
#APT
d-i apt-setup/cdrom/set-first boolean false
tasksel tasksel/first multiselect standard, ssh-server
# GRUB
d-i grub-installer/bootdev string /dev/sda
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
#FINAL
d-i finish-install/reboot_in_progress note
Muito obrigado
Gael
Use um
boot_command
in Packer, que enviará pressionamentos de tecla para a VM e, basicamente, digitará coisas nela. O que vai "digitar" depende de você. Isso vai para o arquivo packer (eu o nomeeibase.pkr.hcl
):Dessa forma, o empacotador servirá o arquivo pré-configurado para a VM via HTTP e substituirá efetivamente as opções de inicialização incorporadas ao ISO por aquelas que você fornece no arquivo do empacotador. Não há necessidade de fazer alterações no ISO.
Estou usando o Qemu; esta é uma cópia do que acabei quando fiz isso meio ano atrás. Parece que o construtor Nutanix não tem este boot_command; no entanto, você pode tentar construir o sistema usando, por exemplo, Qemu ou Virtualbox e depois usá-lo com o Nutanix. Eu simplesmente não sei.
Em relação à sua primeira pergunta, não acho que haja uma maneira mais fácil de habilitar a instalação automatizada
debian installer
em termos de passar o arquivo preseed para ela. Montar uma segunda imagem pode ser uma boa ideia para sua necessidade específica, mas o AFAIKdebian installer
não respeita uma segunda mídia para sua pré-configuração e não há soluções alternativas que eu conheça (FYI, osubiquity
instalador do ubuntu suporta essa entrada).Para obter uma instalação "sem mãos", explicarei 2 coisas que devem ser atendidas.
Configuração do instalador Debian (preseed)
Para tornar o
debian installer
movimento totalmente automático, você precisará disso em seu arquivo preseed:Isso simplesmente dirá
debian installer
para não fazer perguntas para as quais possa encontrar uma resposta. Além disso, você precisa ativar o modo automático comd-i auto-install/enable boolean true
, mas ignore isso por enquanto (falarei sobre o modo automático na próxima parte). Doauto mode
documento:PS Você pode passar algumas perguntas/respostas como parâmetros do kernel com
key=value
formato, ondekey
é um alias. Isso requer a alteração dos parâmetros de inicialização. Veja a lista completa:aliases useful with preseeding
Configuração do carregador de inicialização
Além da configuração do instalador, precisamos fazer algumas alterações no bootloader também. Para que
isolinux
o bootloader funcione em um cenário de instalação autônoma, faço essas 2 alterações em seus arquivos de configuração dentro do iso:isolinux
para selecionar automaticamente a entrada padrão no menu.A primeira alteração é feita adicionando
auto=true
àappend
linha da entrada do menu padrão. Para o debian 11, descobri que "Instalação gráfica" é a entrada padrão. Como a configuração dessa entrada é lida deisolinux/gtk.cfg
, essa alteração deve ser aplicada nesse arquivo. por exemplo, você pode alterar a linha de anexação de configuração do gerenciador de inicialização de exemplo para"append auto=true vga=..."
.O segundo objetivo é alcançado mudando
timeout 0
paratimeout 1
inisolinux/isolinux.cfg
(veja isto ).Nota 1: O
auto=true
parâmetro do kernel é o alias parad-i auto-install/enable boolean true
a configuração preseed. Descobriu-se que deveria ser habilitado pelos parâmetros do kernel por alguns motivos. Colocar seu equivalente no arquivo preseed ainda acaba no prompt de seleção de idioma aguardando a entrada do usuário (talvez no momento em que o arquivo preseed é lido sejadebian installer
tarde demais para ativar o modo automático?).Nota 2: Você não precisa
prompt 1
da configuração do isolinux. Provavelmente fará o contrário do que você deseja, o que impede a seleção automática da entrada padrão (consulte a última linha desta seção ).Nota 3: Alterar a configuração do bootloader requer modificações no conteúdo iso (e, portanto, uma reconstrução iso).
Nota 4: O
isolinux
bootloader é comumente usado para sistemas BIOS (legacy). Em sistemas UEFI, você precisa configurar o GRUB.