Deploy automatizado de switch Juniper via DHCP
Tags: juniper, dhcp, debian
Published: 2022-09-14 21:48:28

Nesse post, pretendo mostrar como fazer instalação de um switch Juniper de forma automatizada utilizando DHCP.

Para essa missão, vamos utilizar o pacote isc-dhcp-server, no meu servidor Debian na versão 10 o pacote é a versão 4.4, dependendo da versão de Linux ou Unix utilizado isso pode variar.

Esse é o cenário que montei no EVE-NG para demonstração:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ysmz3v38u0yf6x5xff6c.png)

Na imagem acima, temos o servidor Debian 10, que baixei do repositório do pessoal que mantêm o EVE-NG e o switch Juniper vQFX com sua RE + PFE, logo abaixo.

**1 - Configurando o servidor DHCP**

Como falei inicialmente, precisamos efetuar a configuração do servidor DHCP, primeiro passo é instalar o bicho:

```
root@debian:~# apt install isc-dhcp-server
```

Após a instalação, vamos até o diretório **"/etc/dhcp/"** e renomear o dhcpd.conf original, para gerarmos um zerado nosso.

```
root@debian:~# cd /etc/dhcp/
root@debian:/etc/dhcp# mv dhcpd.conf dhcpd.conf-old
```

Agora vamos editar um novo arquivo, só com parâmetros uteis ao nosso propósito.

```
root@debian:/etc/dhcp# vim.tiny dhcpd.conf
```

Abaixo o arquivo criado

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3kgomrpwj08t3f4hk0io.png)

No arquivo de configuração acima criamos um espaço com uma opção chamada NEW_OP, com uma série de variáveis especificas para leitura do Junos, isso é encapsulado pela linha:

```
option NEW_OP-encapsulation code 43 = encapsulate NEW_OP;
```
O código 43 é o código utilizado no dhcpd.conf para execução de opções de um fabricante em especifico e com isso efetuar a leitura de todas as variáveis criadas para o switch que vai ser instalado.


**2 - Configurando servidor Apache**

Após a configuração do DHCP, vamos instalar o apache, para que seja possível efetuar downloads via porta 80.

```
root@debian:~# apt install apache2
```

Esse apache, já vem com o básico que é a porta 80 para funcionamento, logo nem vamos precisar configurar nada muito avançado para essa demonstração, no Debian o serviço é instalado e já saí funcionando, logo podemos já visualizar à tela abaixo no navegador via IP do servidor.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l20psvrho9p7td7qmv6a.png)

Com o Apache instalado, vamos via terminal no diretório padrão que é em **"/var/www/html"** e vamos criar o diretório **"juniper"** para acomodar o arquivo .conf do nosso switch e dentro do diretório vamos criar nosso arquivo **"sw.conf"**

```
root@debian:~# cd /var/www/html/
root@debian:/var/www/html# mkdir juniper
root@debian:/var/www/html# cd juniper
root@debian:/var/www/html/juniper# vim.tiny sw.conf
```

Abaixo o arquivo de configuração do nível de sistema que foi criado


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m0tnyrbttnnw2xrcnrta.png)

Após a criação desse arquivo, é possível acessá-lo via navegador no servidor Debian, como podemos ver aqui:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lmc9yrvx6l83ihq7qq68.png)



**OBS: Para casos onde o servidor Apache for ficar sempre ativo, necessário fazer tratativas de segurança, para evitar possíveis invasões, reforçando que aqui estramos tratando apenas um exemplo de laboratório.**


**3 - Configuração do switch**

Após configurarmos o DHCP + Apache com o nosso arquivo para inserção no switch, vamos botar tudo para funcionar de fato.

Primeiro vamos ter que botar o vQFX no EVE-NG para funcionar, antes até do servidor DHCP, para que façamos a inserção da opção **"auto-image-upgrade"**, sem isso o arquivo não é baixado no switch de fato, isso só é necessário no vQFX, em hardware físico essa opção vem ativa por padrão.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1e08jf2limkt5622pem2.png)

Outra ação necessária é executar o comando de show interfaces na em0 para pegarmos o endereço mac para inserirmos em nosso host sw-juniper no DHCP.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wzszwfi1v2xpkpxiuap.png)

Com o mac em mãos, vamos atualizar o arquivo de DHCP no host fixado **"sw-juniper"** na linha onde havia o mac antigo, vamos inserir o novo:

```
host switch-juniper {
        hardware ethernet 50:00:00:09:00:00; #Aqui inserimos o novo mac
```

Após essa atualização, vamos reinicializar o serviço de DHCP

```
root@debian:~# systemctl restart isc-dhcp-server.service
```

Com isso, o DHCP vai identificar o mac do switch como fixo e o switch através do auto-image-upgrade vai baixar as configurações


Após a reinicialização do DHCP já com o mac correto o switch que está com a interface de gerência **em0** com a configuração via DHCP e o auto-image-upgrade ativado vai fazer download das configurações e executar o commit da nova configuração:


Aqui é exibido na tela os parâmetros detectados do host fixado no DHCP, que são "chamados" pelo auto-image-upgrade

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyrrjeoo3ajc9qm48alc.png)


Abaixo exibo a configuração que foi aplicada através do arquivo baixado via Apache


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nodwdwwen0g52je19gro.png)


Nesse tutorial vimos como configurar um servidor DHCP com Apache para uso em novas instalações de switches Juniper, claro em meu exemplo fiz apenas um pequeno trecho de configuração, mas é possível criar um arquivo .conf completo que o auto-image-upgrade consegue baixar e efetuar a leitura, dessa forma o switch já sai plenamente funcional.



Link's uteis: 

**Juniper ZTP** [link](https://www.juniper.net/documentation/us/en/software/junos/junos-install-upgrade/topics/topic-map/zero-touch-provision.html)

**Juniper auto-image-upgrade** [link](https://www.juniper.net/documentation/us/en/software/junos/junos-install-upgrade/topics/ref/statement/auto-image-upgrade-edit-chassis.html)


E por último, queria agradecer ao amigo [Eduardo Schoedler](https://www.linkedin.com/in/eschoedler/)  e a minha esposa [Vanessa Mello](https://www.linkedin.com/in/vanessa-de-oliveira-mello/) que me mostraram essa maravilha.