Pesquisa de site

Configurando um 'servidor de inicialização de rede PXE' para múltiplas instalações de distribuição Linux no RHEL/CentOS 7


Servidor PXE – Preboot eXecution Environment – instrui um computador cliente a inicializar, executar ou instalar um sistema operacional diretamente de uma interface de rede, eliminando a necessidade de gravar um CD/DVD ou usar uma mídia física, ou, pode facilitar o trabalho de instalação de distribuições Linux em sua infraestrutura de rede em várias máquinas ao mesmo tempo.

Requisitos

  1. Procedimento mínimo de instalação do CentOS 7
  2. Procedimento mínimo de instalação do RHEL 7
  3. Configurar endereço IP estático no RHEL/CentOS 7
  4. Remova serviços indesejados no RHEL/CentOS 7
  5. Instale o servidor NTP para definir a hora correta do sistema no RHEL/CentOS 7

Este artigo explicará como você pode instalar e configurar um servidor PXE no RHEL/CentOS 7 x64 bits com repositórios de instalação locais espelhados, fontes fornecidas pela imagem ISO do DVD do CentOS 7, com a ajuda do servidor DNSMASQ.

Que fornece serviços DNS e DHCP, pacote Syslinux que fornece bootloaders para inicialização pela rede, TFTP-Server, que faz imagens inicializáveis disponíveis para download via rede usando Trivial File Transfer Protocol (TFTP) e VSFTPD Servidor que hospedará a imagem de DVD espelhada montada localmente – que atuará como um RHEL oficial Repositório de instalação espelhado /CentOS 7 de onde o instalador extrairá seus pacotes necessários.

Etapa 1: instalar e configurar o servidor DNSMASQ

1. Não há necessidade de lembrá-lo que é absolutamente exigente que uma de suas interfaces de placa de rede, caso seu servidor possua mais NICs, seja configurada com um endereço IP estático do mesmo intervalo de IP que pertence a o segmento de rede que fornecerá serviços PXE.

Portanto, depois de configurar seu endereço IP estático, atualizar seu sistema e realizar outras configurações iniciais, use o seguinte comando para instalar o daemon DNSMASQ.

yum install dnsmasq

2. O arquivo de configuração padrão principal do DNSMASQ localizado no diretório /etc é autoexplicativo, mas pretende ser bastante difícil de editar, devido às suas explicações altamente comentadas.

Primeiro, certifique-se de fazer backup deste arquivo caso precise revisá-lo mais tarde e, em seguida, crie um novo arquivo de configuração em branco usando seu editor de texto favorito emitindo os seguintes comandos.

mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.backup
nano /etc/dnsmasq.conf

3. Agora, copie e cole as seguintes configurações no arquivo dnsmasq.conf e certifique-se de alterar as instruções explicadas abaixo para corresponder às suas configurações de rede.

interface=eno16777736,lo
#bind-interfaces
domain=centos7.lan
DHCP range-leases
dhcp-range= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
Gateway
dhcp-option=3,192.168.1.1
DNS
dhcp-option=6,92.168.1.1, 8.8.8.8
server=8.8.4.4
Broadcast Address
dhcp-option=28,10.0.0.255
NTP Server
dhcp-option=42,0.0.0.0

pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.20", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot

As declarações que você precisa alterar são as seguintes:

  1. interface – Interfaces que o servidor deve escutar e fornecer serviços.
  2. bind-interfaces – Remova o comentário para vincular apenas nesta interface.
  3. domínio – Substitua pelo seu nome de domínio.
  4. dhcp-range – Substitua-o pelo intervalo de IP definido pela sua máscara de rede neste segmento.
  5. dhcp-boot – Substitua a instrução IP pelo endereço IP da sua interface.
  6. dhcp-option=3,192.168.1.1 – Substitua o endereço IP pelo gateway do seu segmento de rede.
  7. dhcp-option=6,92.168.1.1 – Substitua o endereço IP pelo IP do seu servidor DNS – vários IPs DNS podem ser definidos.
  8. server=8.8.4.4 – Coloque os endereços IP dos encaminhadores de DNS.
  9. dhcp-option=28,10.0.0.255 – Substitua o endereço IP pelo endereço de transmissão da rede –opcionalmente.
  10. dhcp-option=42,0.0.0.0 – Coloque seus servidores de horário de rede – opcionalmente (o endereço 0.0.0.0 é para auto-referência).
  11. pxe-prompt – Deixe como padrão – significa pressionar a tecla F8 para entrar no menu 60 com tempo de espera de segundos.
  12. pxe=service – Use x86PC para arquiteturas de 32/64 bits e insira um prompt de descrição do menu entre aspas. Outros tipos de valores podem ser: PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI e X86-64_EFI.
  13. enable-tftp – Habilita o servidor TFTP integrado.
  14. tftp-root – Use /var/lib/tftpboot – o local para todos os arquivos de inicialização pela rede.

Para outras opções avançadas relacionadas ao arquivo de configuração, sinta-se à vontade para ler o manual do dnsmasq.

Etapa 2: Instale os carregadores de inicialização SYSLINUX

4. Depois de editar e salvar o arquivo de configuração principal do DNSMASQ, vá em frente e instale o pacote do carregador de inicialização PXE do Syslinx emitindo o seguinte comando.

yum install syslinux

5. Os arquivos dos gerenciadores de inicialização PXE residem no caminho absoluto do sistema /usr/share/syslinux, então você pode verificá-lo listando o conteúdo deste caminho. Esta etapa é opcional, mas você pode precisar estar ciente deste caminho porque na próxima etapa copiaremos todo o seu conteúdo para o caminho do Servidor TFTP.

ls /usr/share/syslinux

Etapa 3: Instale o servidor TFTP e preencha-o com bootloaders SYSLINUX

6. Agora, vamos passar para a próxima etapa e instalar o TFTP-Server e, em seguida, copiar todos os arquivos bootloders fornecidos pelo pacote Syslinux do local listado acima para / var/lib/tftpboot emitindo os seguintes comandos.

yum install tftp-server
cp -r /usr/share/syslinux/* /var/lib/tftpboot

Etapa 4: configurar o arquivo de configuração do servidor PXE

7. Normalmente, o Servidor PXE lê sua configuração a partir de um grupo de arquivos específicos (arquivos GUID – primeiro, MAC arquivos – próximo, arquivo Padrão – último) hospedado em uma pasta chamada pxelinux.cfg, que deve estar localizada no diretório especificado em tftp-root declaração do arquivo de configuração principal do DNSMASQ.

Crie o diretório necessário pxelinux.cfg e preencha-o com um arquivo default emitindo os seguintes comandos.

mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default

8. Agora é hora de editar o arquivo de configuração do Servidor PXE com opções válidas de instalação de distribuições Linux. Observe também que todos os caminhos usados neste arquivo devem ser relativos ao diretório /var/lib/tftpboot.

Abaixo você pode ver um exemplo de arquivo de configuração que pode usá-lo, mas modifique as imagens de instalação (arquivos kernel e initrd), protocolos (FTP, HTTP, HTTPS, NFS) e IPs para refletir os repositórios e caminhos de origem de instalação da rede de acordo.

nano /var/lib/tftpboot/pxelinux.cfg/default

Adicione o seguinte trecho completo ao arquivo.

default menu.c32
prompt 0
timeout 300
ONTIMEOUT local

menu title ########## PXE Boot Menu ##########

label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount

label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp

label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append  initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password

label 4
menu label ^4) Boot from local drive

Como você pode ver, as imagens de inicialização do CentOS 7 (kernel e initrd) residem em um diretório chamado centos7 relativo a /var/lib/tftpboot (em um caminho absoluto do sistema, isso significaria /var/lib/tftpboot/centos7) e os repositórios do instalador podem ser acessados usando o protocolo FTP no local de rede 192.168.1.20/pub – neste caso, os repositórios são hospedados localmente porque o endereço IP é igual ao endereço do servidor PXE).

Além disso, o menu rótulo 3 especifica que a instalação do cliente deve ser feita a partir de um local remoto via VNC (aqui substitua a senha do VNC por uma senha forte) caso você instale em um cliente headless e o menu rótulo 2 especifica como
a instalação origina um espelho oficial da Internet do CentOS 7 (este caso requer uma conexão à Internet disponível no cliente através de DHCP e NAT).

Importante: Como você pode ver na configuração acima, usamos o CentOS 7 para fins de demonstração, mas você também pode definir imagens do RHEL 7, seguindo instruções e configurações completas são baseados apenas no CentOS 7, então tome cuidado ao escolher a distribuição.

Etapa 5: adicionar imagens de inicialização do CentOS 7 ao servidor PXE

9. Para esta etapa são necessários o kernel do CentOS e os arquivos initrd. Para obter esses arquivos você precisa da imagem CentOS 7 DVD ISO. Então, vá em frente e baixe o CentOS DVD Image, coloque-o em sua unidade de DVD e monte a imagem no caminho do sistema /mnt emitindo o comando abaixo.

A razão para usar o DVD e não uma imagem mínima de CD é o fato de que posteriormente o conteúdo deste DVD seria usado para criar o
repositórios de instalação local para fontes FTP.

mount -o loop /dev/cdrom  /mnt
ls /mnt

Se sua máquina não tiver unidade de DVD, você também pode baixar o CentOS 7 DVD ISO localmente usando os utilitários wget ou curl de um espelho do CentOS e montá-lo.

wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
mount -o loop /path/to/centos-dvd.iso  /mnt

10. Depois que o conteúdo do DVD for disponibilizado, crie o diretório centos7 e copie o kernel inicializável do CentOS 7 e as imagens initrd do local montado no DVD para a estrutura de pastas centos7.

mkdir /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/vmlinuz  /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/initrd.img  /var/lib/tftpboot/centos7

A razão para usar esta abordagem é que, posteriormente, você pode criar novos diretórios separados no caminho /var/lib/tftpboot e adicionar outras distribuições Linux ao menu PXE sem bagunçar toda a estrutura de diretórios.

Etapa 6: Criar fonte de instalação do espelho local CentOS 7

11. Embora você possa configurar Espelhos de origem de instalação por meio de vários protocolos, como HTTP, HTTPS ou NFS, para este guia, escolhi FTP porque é muito confiável e fácil de configurar com a ajuda do servidor vsftpd.

Instale ainda o daemon vsftpd, copie todo o conteúdo montado em DVD para o caminho padrão do servidor vsftpd (/var/ftp/pub) – isso pode demorar um pouco dependendo dos recursos do seu sistema e anexar permissões legíveis para esse caminho emitindo os comandos a seguir.

yum install vsftpd
cp -r /mnt/*  /var/ftp/pub/ 
chmod -R 755 /var/ftp/pub

Etapa 7: iniciar e ativar daemons em todo o sistema

12. Agora que a configuração do servidor PXE foi finalmente concluída, inicie os servidores DNSMASQ e VSFTPD, verifique seu status e habilite-os em todo o sistema, para iniciar automaticamente após cada reinicialização do sistema, executando os comandos abaixo.

systemctl start dnsmasq
systemctl status dnsmasq
systemctl start vsftpd
systemctl status vsftpd
systemctl enable dnsmasq
systemctl enable vsftpd

Etapa 8: Abra o Firewall e teste a fonte de instalação do FTP

13. Para obter uma lista de todas as portas que precisam estar abertas em seu Firewall para que as máquinas clientes acessem e inicializem a partir do servidor PXE, execute o comando netstat e adicione CentOS 7 Regras do Firewalld de acordo com as portas de escuta dnsmasq e vsftpd.

netstat -tulpn
firewall-cmd --add-service=ftp --permanent  	## Port 21
firewall-cmd --add-service=dns --permanent  	## Port 53
firewall-cmd --add-service=dhcp --permanent  	## Port 67
firewall-cmd --add-port=69/udp --permanent  	## Port for TFTP
firewall-cmd --add-port=4011/udp --permanent  ## Port for ProxyDHCP
firewall-cmd --reload  ## Apply rules

14. Para testar o caminho da rede da fonte de instalação do FTP, abra um navegador localmente (o lynx deve fazer isso) ou em um computador diferente e digite o endereço IP do seu servidor PXE com
Protocolo FTP seguido pela localização da rede /pub no URL arquivado e o resultado deve ser conforme apresentado na imagem abaixo.

ftp://192.168.1.20/pub

15. Para depurar o servidor PXE para eventuais erros de configuração ou outras informações e diagnósticos em modo live execute o seguinte comando.

tailf /var/log/messages

16. Finalmente, a última etapa obrigatória que você precisa realizar é desmontar o DVD do CentOS 7 e remover a mídia física.

umount /mnt

Etapa 9: Configurar clientes para inicializar pela rede

17. Agora seus clientes podem inicializar e instalar o CentOS 7 em suas máquinas configurando a inicialização de rede como dispositivo de inicialização primário a partir do BIOS de seus sistemas ou pressionando uma tecla especificada durante Operações BIOS POST conforme especificado no manual da placa-mãe.

Para escolher a inicialização pela rede. Depois que o primeiro prompt PXE aparecer, pressione a tecla F8 para entrar na apresentação e, em seguida, pressione a tecla Enter para prosseguir para o menu PXE.

18. Depois de chegar ao menu PXE, escolha o tipo de instalação do CentOS 7, pressione a tecla Enter e continue com o procedimento de instalação da mesma forma que você faria para instalá-lo a partir de um local. dispositivo de inicialização de mídia.

Observe que o uso da variante 2 deste menu requer uma conexão ativa com a Internet no cliente de destino. Além disso, abaixo
screenshots você pode ver um exemplo de instalação remota de cliente via VNC.

Isso é tudo para configurar um servidor PXE mínimo no CentOS 7. No meu próximo artigo desta série, discutirei outras questões relacionadas à configuração do servidor PXE, como como configurar instalações automatizadas do CentOS 7 usando arquivos Kickstart e adicionar outras distribuições Linux. para o menu PXE – Ubuntu Server e Debian 7.