Napalm Plugin
O plugin Napalm para o NetBox permite integrar funcionalidades de coleta em tempo real diretamente dos dispositivos de rede configurados no sistema. Com ele, é possível obter informações atualizadas como status operacional, vizinhanças (LLDP/CDP) e configurações dos equipamentos, enriquecendo a visualização e gestão dos ativos no NetBox. Essa integração torna a ferramenta mais dinâmica, aproximando a documentação da realidade atual da rede.
Repositório do Plugin
Copie o link abaixo ou clique a seguir para acessar o Repositório do Github
https://github.com/netbox-community/netbox-napalm-plugin
1. Requisitos para instalação
Esta documentação utilizou os seguintes componentes com suas respectivas versões:
| Componentes | Versões |
|---|---|
| Netbox | v4.1.11 |
| Napalm Plugin | v0.3.1 |
Na documentação foram testadas as seguintes funcionalidades:
| Funcionalidades | Funcionando |
|---|---|
| Status Page | ✅ |
| LLDP Neighbors Page | ✅ |
| Config Page | ✅ |
2. Instalando e Configurando o Plugin no Netbox
Para instalarmos o plugin no Netbox, precisamos alterar e adicionar alguns arquivos que são responsáveis pela configuração do Netbox.
Os arquivos são:
plugin_requirements.txt.DockerFile-Plugins.docker-compose.override.yml.configuration/plugins.py.
2.1 Configurando a versão do Netbox:
-
Primeiro, vamos clonar o repositório do Netbox:
git clone -b release https://github.com/netbox-community/netbox-docker.git -
Acesse o diretório clonado:
cd netbox-docker -
Agora, mude para a release 3.0.0
git checkout 3.0.0
Informação
Alteramos a branch do repositório para termos acesso à versão 4.1.11 do Netbox.
Dica
Todos os comandos abaixos serão executados dentro diretório raiz do netbox netbox-docker/.
2.2 plugin_requirements.txt
Este arquivo contém ama lista dos plugins do Netbox (como pacotes Python do PyPO) que devem ser instalados durante a construção da imagem Docker.
Execute o seguinte comando para escrever o pacote dentro do arquivo plugin_requirements.txt.
echo "netbox-napalm-plugin" > plugin_requirements.txt
2.3 DockerFile-Plugins
Esse é o DockerFile usado para construir a imagem docker customizada.
-
Crie o arquivo e acesse com um editor:
nano DockerFile-Plugins -
Copie o conteúdo abaixo e cole no arquivo:
FROM netboxcommunity/netbox:v4.1 COPY ./plugin_requirements.txt /opt/netbox/ RUN pip install -r /opt/netbox/plugin_requirements.txt
2.4 docker-compose.override.yml
Como o nome implica, esse arquivo contaim as configurações que vão sobrescrever o docker-compose.yml.
Caso você ainda não tenha configurado a rede br-lab. Acesse: Configurando a Rede Docker
-
Crie o arquivo e acesse com um editor:
nano docker-compose.override.yml -
Copie o conteúdo abaixo e cole no arquivo:
services: netbox: image: netbox:latest-plugins pull_policy: never ports: - 8000:8080 build: context: . dockerfile: Dockerfile-Plugins networks: - br-lab netbox-worker: image: netbox:latest-plugins pull_policy: never networks: - br-lab netbox-housekeeping: image: netbox:latest-plugins pull_policy: never networks: - br-lab postgres: networks: - br-lab redis: networks: - br-lab redis-cache: networks: - br-lab networks: br-lab: external: true
As alterações feitas foram:
- adicionar o Netbox na rede
br-lab. - alteração do dockerfile para o
Dockerfile-Plugins, criado anteriormente. - Também alterado a imagem dos serviços para:
netbox:latest-plugins.
2.5 plugins.py
Este arquivo é responsável por setar as configurações específicas de cada plugin.
-
Acesse o arquivo com o editor:
nano configuration/plugins.py -
Copie e cole o conteúdo no arquivo:
PLUGINS = [ "netbox_napalm_plugin" ] PLUGINS_CONFIG = { "netbox_napalm_plugin": { "NAPALM_USERNAME": "admin", # Usuário para acesso aos equipamentos "NAPALM_PASSWORD": "admin@123", # Senha para acesso aos equipamentos }, }
3. Build e Deploy!
Agora seu Netbox está configurado e pronto para o deploy, siga os comandos abaixo e construa a nova instancia do Netbox!
-
Construa a imagem:
docker compose build --no-cache -
Suba os containeres:
docker compose up -d
Após os containeres subirem, execute os comandos abaixos para copiar os arquivos estáticos solicitados pelo plugin do Napalm.
-
Primeiro, mude as permissões dos arquivos usando o comando abaixo:
docker compose exec -it --user root netbox chmod -R a+w /opt/netbox/netbox/static -
Então, execute o comando para copiar os arquivo estáticos:
docker compose exec netbox python3 manage.py collectstatic --noinput
4. Configurando o Napalm
Agora, com o Netbxo já configurado e funcionando, vamos configurar e entender melhor como o Napalm funciona.
Pontos importantes, para o ativar o plugin do Napalm precisamos dos seguintes requisitos:
- Napalm Platform Configs
- Dispositivo
- Função do Dispositivo (Device role)
- Tipo do Dispositivo (Device type)
- Status: Ativo
- Plataforma (Plataform)
- IPv4 Primário
- Interfaces (Para exibir a aba LLDP Neighbors)
4.1 Napalm Platform Configs
Acesse seu Netbox e siga as instruções abaixo.
- No menu lateral, vá em Plugin → Napalm.
- Clique no botão Adicionar.
Plataform: Selecione uma plataform (ex: junos)NAPALM driver: Aqui é o nome do driver usado pelo Napalm para coletar os dados dos dispositivos. Para ver os drivers disponíveis, acesse Supported Devices. Neste caso vamos usar o junos.NAPALM arguments(Opcional): Argumentos passados quando inicializa o NAPALM driver. Argumentos em: Optional Arguments. Em nosso caso, não iremos preencher.- Clique em Criar.
Pronto! agora temos o Plataform Config criado para acesso aos nossos dispositivos!
4.2 Configurando um Dispositivo
Para testarmos o plugin do Napalm, precisamos de dispositivos para consulta, para isso, vamos usar o laboratório de Descoberta Mais informações. Logo, adicionar pelo menos um dispositivo ao Netbox.
4.2.1 Adicionando os Roteadores
-
Clone o respositório do laboratório:
git clone https://git.rnp.br/redes-abertas/labs/-/tree/main/discovery-lab -
Entre no repositório:
cd discovery-lab/ -
Inicie a topologia com o comando:
sudo clab deploy -t clab/discovery-lab.clab.yaml
Debug
Os dispositivos podem levar cerca de 10 minutos para estarem totalmente operacionais.
Caso ocorra algum erro, verifique a saída do comando para possíveis mensagens de erro. Use docker logs <container_name> para depurar.
4.2.2 Adicionando o roteador ao Netbox.
Criar site
- Vá em Sites → clique em Add.
- Preencha os campos:
- Name:
RNP - Clique em Create.
Criar o Fabricante
- Vá em Devices → Manufacturers → Add.
- Preencha:
- Name:
Juniper - Slug:
juniper(ou gerado automaticamente) - Clique em Create.
Criar o Tipo de Dispositivo
- Vá em Devices → Device Types → Add.
- Preencha:
- Manufacturer:
Juniper - Model:
VMX - Clique em Create.
Criar o Dispositivo
- Vá em Devices → clique em Add.
- Preencha:
- Name:
JPA - Device Role:
Roteador(crie se necessário) - Device Type:
VMX - Site:
RNP - Status:
Active - Clique em Create.
Criar Interface
- Acesse o dispositivo
JPA. - Vá na aba Interfaces → clique em Add Interface.
- Preencha:
- Name:
ge-0/0/2 - Type:
Virtual - Clique em Create.
Criar Endereço IP
- Vá em IPAM → IP Addresses → Add.
- Preencha:
- Address:
172.10.10.101/32 - Status:
Active - Interface Assignment:
- Device:
JPA - Interface:
ge-0/0/2
- Device:
- Clique em Create.
Adicionando IPv4 Primário no Dispositivo
- Vá em Dispositivos
- Clique no JPA e depois em Editar
- Em Gestão → IPv4 primário: Selecione
172.10.10.101/32 (ge-0/0/2)
5. Visualizando o Plugin
Após o cadastro, na aba de dispositivos, acesse JPA.
Agora você deve estar vendo as abas adicionais do plugin Napalm.
- Status
- LLDP Neighbors
- Config
5.1 Status
A aba Status, habilitada por meio da integração do NetBox com o plugin NAPALM, exibe informações operacionais em tempo real do dispositivo de rede. Essa funcionalidade permite ao administrador monitorar rapidamente o estado atual do equipamento sem sair da interface do NetBox.
Principais Informações Apresentadas:
-
Device Facts: Dados básicos e estáticos do dispositivo, como:
-
Hostname: Identificação do dispositivo na rede (ex: JPA) -
Vendor / Model: Fabricante e modelo do equipamento (ex: Juniper VMX) -
Serial Number: Número de série do hardware -
OS Version: Versão do sistema operacional (ex: 22.2R1.9) -
Uptime: Tempo desde o último boot, com data e hora registradas
-
-
Environment: Métricas ambientais e de desempenho que auxiliam na manutenção preventiva e operação:
-
CPU Usage: Utilização atual da(s) CPU(s), apresentada por núcleo -
Memory: Quantidade de memória disponível e utilizada -
Temperature, Fans, Power (PSUs): Status dos sensores e fontes de energia (caso o equipamento forneça esses dados)
-

Finalidade:
Essa aba é especialmente útil para diagnóstico rápido, auditorias, e monitoramento da saúde dos dispositivos, eliminando a necessidade de login manual via SSH ou console. As informações são atualizadas dinamicamente por meio da API do NAPALM, desde que corretamente configurada no NetBox.
5.2 LLDP Neighbors
Esta funcionalidade exibe os vizinhos de camada 2 detectados por meio do protocolo LLDP (Link Layer Discovery Protocol). Essa funcionalidade permite identificar automaticamente os dispositivos conectados diretamente ao equipamento monitorado.
Comportamento Importante:
-
A visualização de vizinhos está limitada às interfaces previamente cadastradas no NetBox.
-
Caso uma interface exista no dispositivo real, mas não tenha sido criada no NetBox, os vizinhos descobertos por ela não serão exibidos.

Finalidade:
Essa aba é útil para validar conexões físicas entre dispositivos, verificar a topologia de rede em tempo real e detectar erros de cabeamento ou configuração de portas, de forma automatizada e integrada à interface do NetBox.
5.3 Config
A aba Config, permite a visualização direta das configurações do dispositivo de rede, extraídas remotamente por meio da API. Ela apresenta diferentes versões do arquivo de configuração, úteis para comparação, auditoria e troubleshooting.
Tipos de Configurações Exibidas:
-
Startup Config: A configuração que será carregada quando o dispositivo for reiniciado. Representa o estado persistente. -
Running Config: A configuração atualmente em execução no dispositivo. Pode incluir mudanças não salvas. -
Candidate Config(quando suportada pelo sistema operacional): Configuração em edição que ainda não foi aplicada. Presente em equipamentos que trabalham com staging de configurações (ex: Juniper).

Finalidade:
Essa aba é essencial para o gerenciamento e rastreamento de mudanças na configuração dos dispositivos, além de fornecer uma forma prática e segura de validar se as configurações persistentes estão de acordo com as em execução — tudo dentro da interface do NetBox.