Pesquisa de site

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)

Artigos relacionados: