Instalação automatizada do Debian 12 usando inicialização PXE
Na verdade, todo administrador de sistema sempre deseja ter o tempo mais fácil e curto ao gerenciar seu ambiente. Por esse motivo, eles estão continuamente descobrindo maneiras de automatizar tarefas em seu ambiente. Isto ajuda a eliminar os erros cometidos pelas configurações manuais e também reduz a monotonia de repetir as mesmas tarefas indefinidamente.
Ao instalar hosts, a inicialização via rede ou inicialização PXE pode ser usada para automação. Preboot eXexution Environment abreviado como PXE é uma arquitetura cliente-servidor padronizada usada para inicializar, executar e instalar vários sistemas operacionais usando a interface de rede. Esta tecnologia foi introduzida em 1999 pela Intel. Desde então, esta ferramenta trouxe muitos benefícios para o setor de TI, alguns dos quais incluem:
- Nenhum armazenamento é necessário ao instalar o sistema operacional
- Manutenção simples do sistema, pois pode ser feita remotamente
- É independente do fornecedor, o que facilita a adição de novos computadores clientes e extensões de rede
- Maior segurança da informação devido ao armazenamento centralizado de dados.
Neste guia, aprenderemos como podemos automatizar a instalação do Debian 12 usando inicialização PXE. Aqui, configuraremos os componentes abaixo para cumprir diferentes funções:
- Servidor DHCP: fornecerá serviços DNS e DHCP para a inicialização PXE
- Servidor TFTP: é um simples FTP lockstep usado para criar imagens inicializáveis para serem baixadas pela rede
1. Instale e configure o servidor DHCP
Para este guia, trabalharemos com um sistema baseado em Debian como servidor/estação de trabalho. Você precisa garantir que o servidor DHCP esteja instalado e funcionando.
Para instalar o servidor DHCP, use:
sudo apt update
sudo apt install isc-dhcp-server
Depois de instalado, exporte as variáveis necessárias:
export DHCP_SERVER_INTERFACESv4=ens18
Agora crie a configuração para o servidor DHCP.
sudo sed -e 's/^#DHCPDv4_CONF=/DHCPDv4_CONF=/g' \
-e 's/^#DHCPDv4_PID=/DHCPDv4_PID=/g' \
-e "s/INTERFACESv4=\"\"/INTERFACESv4=\"${DHCP_SERVER_INTERFACESv4}\"/g" \
-i /etc/default/isc-dhcp-server
Além disso, abra o arquivo de configuração DHCP para edição:
sudo vim /etc/dhcp/dhcpd.conf
No arquivo, forneça as configurações de rede conforme desejado:
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.56 192.168.200.250;
option broadcast-address 192.168.200.255;
option routers 192.168.200.1;
option subnet-mask 255.255.255.0;
option domain-name "mydomain.com";
option domain-name-servers 192.168.200.1;
next-server 192.168.200.56; # our Server/Workstatation
filename "pxelinux.0";
}
Na configuração acima, temos a sub-rede como 192.168.200.0/24 e a estação de trabalho ou servidor para TFTP como 192.168.200.56. Depois que a configuração for criada, inicie e habilite o serviço:
sudo systemctl restart isc-dhcp-server
Verifique se o serviço está em execução:
$ systemctl status isc-dhcp-server
● isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
Active: active (running) since Wed 2023-06-28 07:27:37 EDT; 7s ago
Docs: man:systemd-sysv-generator(8)
Process: 175177 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 4623)
Memory: 4.4M
CPU: 29ms
CGroup: /system.slice/isc-dhcp-server.service
└─175187 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf ens18
2. Instale e configure o servidor TFTP
A próxima coisa que precisamos instalar e configurar é o servidor TFTP. Isso pode ser instalado em um host baseado em Debian usando o comando:
sudo apt install atftpd -y
Depois de concluído, inicie e ative o serviço:
sudo systemctl enable atftpd
sudo systemctl start atftpd
O TFTP será usado para servir os arquivos de inicialização. Então adicionaremos a imagem do Debian 12. Primeiro, vá para o diretório TFTP:
cd /srv/tftp
Baixe e extraia os arquivos de imagem. Exporte as variáveis para o espelho:
export MIRROR=http://ftp.debian.org/debian/dists/bookworm
export ARCH=amd64
export IMAGE_URL=${MIRROR}/main/installer-$ARCH/current/images/netboot/netboot.tar.gz
Agora baixe a extração da imagem de inicialização do Debian 12
wget -q -O - ${IMAGE_URL} | sudo tar xzf -
3. Configure o servidor PXE
Também precisamos configurar o servidor PXE. Primeiro, forneça a configuração do bootloader SYSLinux PXE:
cat <<EOF | sudo tee debian-installer/amd64/boot-screens/syslinux.cfg
path debian-installer/$ARCH/boot-screens
include debian-installer/$ARCH/boot-screens/menu.cfg
default debian-installer/$ARCH/boot-screens/vesamenu.c32
prompt 0
timeout 50
EOF
Em seguida, prossiga e crie o menu da tela de inicialização. Primeiro exporte o endereço IP do servidor TFTP:
export SERVER_IPADDR=192.168.200.56
Agora crie a configuração:
cat <<EOF | sudo tee debian-installer/amd64/boot-screens/menu.cfg
menu hshift 13
menu width 49
menu margin 8
menu tabmsg
menu title Installer boot menu
label Debian-12-automated-installation
menu label ^Debian 12 automated Installation
kernel debian-installer/amd64/linux
append auto=true priority=critical vga=788 \
initrd=debian-installer/amd64/initrd.gz \
preseed/url=tftp://${SERVER_IPADDR}/preseed/debian-12-preseed.cfg
menu end
EOF
4. Crie configurações para instalação do Debian
Para que a instalação do Debian 12 seja totalmente automatizada, usaremos o debian-12-preseed.cfg que contém as variáveis necessárias ao executar a instalação. Isso inclui definir localidades, senhas de usuário, fuso horário, particionamento de disco, etc.
Crie o arquivo no diretório pressionado:
sudo mkdir preseed
Exporte as variáveis necessárias:
export PRESEED_LOCALE=en_US
export PRESEED_LANGUAGE=en
export PRESEED_COUNTRY=KE
export PRESEED_KEYMAP=us
export PRESEED_MIRROR=ftp.jp.debian.org
export PRESEED_TIMEZONE=Africa/Nairobi
Crie a configuração conforme mostrado:
cat <<EOF | sudo tee preseed/debian-12-preseed.cfg
d-i debian-installer/locale string ${PRESEED_LOCALE}
d-i debian-installer/language string ${PRESEED_LANGUAGE}
d-i debian-installer/country string ${PRESEED_COUNTRY}
d-i keyboard-configuration/xkb-keymap select ${PRESEED_KEYMAP}
d-i passwd/user-fullname string
d-i passwd/username string debian
d-i passwd/root-password password Passw0rd
d-i passwd/root-password-again password Passw0rd
d-i passwd/user-password password Passw0rd2
d-i passwd/user-password-again password Passw0rd2
d-i user-setup/allow-password-weak boolean true
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i mirror/country string manual
d-i mirror/http/hostname string ${PRESEED_MIRROR}
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i time/zone string ${PRESEED_TIMEZONE}
d-i partman/confirm boolean true
d-i partman/choose_partition select finish
d-i partman/confirm_nooverwrite boolean true
d-i partman-auto/disk string /dev/[sv]da
d-i partman-auto/method string lvm
d-i partman-auto/choose_recipe select atomic
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/guided_size string max
d-i partman-partitioning/confirm_write_new_label boolean true
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string /dev/[sv]da
d-i pkgsel/update-policy select none
d-i pkgsel/include string task-gnome-desktop openssh-server
d-i finish-install/reboot_in_progress note
EOF
Agora a configuração será usada para automatizar o Debian 12 até o fim, sem qualquer interação humana. Reinicie o TFTP
sudo systemctl restart atftpd
Se você tiver um firewall ativado, será necessário permitir o TFTP através dele:
sudo ufw allow 69/udp
5. Instalação automatizada do Debian 12
A próxima coisa a fazer é criar uma VM ou usar uma máquina real que exista na mesma rede que a máquina TFTP. Se for uma VM, crie o disco rígido e conecte uma interface de rede.
Você também precisa garantir que a inicialização pela rede esteja habilitada e logo após o disco rígido, conforme mostrado:
Agora inicie a máquina e ela fará o download e executará a imagem de inicialização conforme mostrado.
O menu de inicialização do SYSLinux criado deve aparecer conforme mostrado:
Selecione a opção e aguarde a instalação completa sem nenhuma interação.
Depois de concluído, a máquina será reinicializada conforme mostrado:
Faça login usando a senha de usuário criada e aproveite.
Agora você pode fazer configurações pós-instalação em seu sistema Debian 12 usando o guia abaixo:
- Principais coisas obrigatórias após a instalação do Debian 12 (Bookworm)
Veredito
Todos podemos concordar que automatizamos a instalação do Debian 12 usando PXE Boot. Isso pode ser vital se você tiver um ambiente grande e precisar de instalações de sistema automatizadas. Espero que isso tenha sido importante para você.
Ver mais:
- Instale máquinas virtuais em KVM usando PXE e Kickstart
- Como instalar o Docker no Debian 12 (Bookworm)
- Usando Docker Compose/Podman Compose no Debian 12 (Bookworm)