Instalando o Netbox no Ubuntu 22.04

O Netbox é uma ferramenta para auxiliar profissionais da área de infraestrutura e redes na organização e gerência através de uma documentação bem detalhada. Diversos recursos como IPAM, provisionamento automático de IPv4/IPv6, VRFs, VLAN, gerenciamento de ASN, modelagem de rack etc.

Uma das filosofias está diretamente ligada a ideia de replicar o mundo real no desenvolvimento da documentação. Além das funcionalidades nativas é possível usar plugins para expandir a sua capacidade de trabalho.

Cenário e Requisitos

Nosso cenário está montado com Ubuntu Server na versão 22.04 com todos os pacotes atualizados.

Python 3.8 ou superior
PostgreSQL 11 ou superior
Redis 4.0 ou superior

O tutorial é extenso e possui muito conteúdo técnico, a partir daqui você conseguirá realizar a instalação e deixar funcionando em produção normalmente. Mas é preciso alertar para a execução correta de cada comando para evitar dores de cabeça.

1 – Atualize o sistema e realize um upgrade.

Antes de realizar qualquer procedimento é importante estar com os repositórios e o sistema totalmente atualizados.

# sudo apt update
# sudo apt upgrade

2 – Instale o PostgreeSQL na versão 11 ou superior.

O PostgreeSQL servirá como o principal banco de dados do Netbox.

# sudo apt install -y postgresql

Confira se o PostgreeSQL instalado está na versão 11 ou superior.

# psql -V

Você deverá ver uma saída parecida com o exemplo abaixo.

psql (PostgreSQL) 14.8 (Ubuntu 14.8-0ubuntu0.22.04.1)

3 – Conecte ao postgres psql para criar o banco de dados, usuário e atribuir as permissões.

# sudo -u postgres psql

Crie o banco de dados seguindo o exemplo abaixo, lembre de usar uma senha segura pois estou usando o exemplo da documentação oficial.

CREATE DATABASE dbnetbox;
CREATE USER usrnetbox WITH PASSWORD '3AQ,T(H;`FNzGj4i#yh]lpk$';
ALTER DATABASE dbnetbox OWNER TO usrnetbox;
\q

Observação: Os dois comandos abaixo deverão ser executados para a versão 15 ou superior do PostgreSQL.

\connect netbox;
GRANT CREATE ON SCHEMA public TO netbox;

Agora vamos testar se tudo está funcionando corretamente, conecte-se ao banco de dados.

# psql --username netbox --password --host localhost netbox

Execute o \conninfo para mais informações sobre a conexão.

You are connected to database "netbox" as user "netbox" on host "localhost" (address "::1") at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)

Para sair basta executar o \q no terminal.

4 – Instalando o Redis.

O Redis é utilizado para o armazenamento em cache e enfileiramento de valor-chave na memória.

# sudo apt install -y redis-server

Confira se a versão é superior a 4.0

# redis-server -v

Agora veja se o status do serviço retorna a resposta PONG. Se sim, então está funcionando tudo normal.

# redis-cli ping

5 – Instalando o python 3.

O python é a principal linguagem de desenvolvimento utilizada para criar o Netbox, por isso precisamos dele instalado.

# sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev

Verifique se a versão 3.8 ou superior foi instalada.

# python3 -V

6 – Baixe a última versão estável do Netbox.

Para instalação é recomendado que se use uma versão estável e o download seja feito do repositório oficial no Github.

Link do repositório: https://github.com/netbox-community/netbox/releases

Acesse o diretório /tmp e baixe o arquivo tar.gz.

# cd /tmp
# sudo wget https://github.com/netbox-community/netbox/archive/refs/tags/v3.5.8.tar.gz

Extraia o arquivo que no meu exemplo é o v3.5.8.tar.gz para o diretório /opt.

# sudo tar -xzf v3.5.8.tar.gz -C /opt

Agora vamos criar um link simbólico do diretório extraído para acessarmos de maneira mais fácil.

# sudo ln -s /opt/netbox-3.5.8/ /opt/netbox

7 – Criando usuário no sistema

É importante ter um usuário configurado no sistema para seja possível o acesso a configurações e execução de processos do Netbox.

Crie o usuário e atribua as permissões dos diretórios ao usuário criado.

# sudo adduser --system --group netbox

# sudo chown --recursive netbox /opt/netbox/netbox/media/
# sudo chown --recursive netbox /opt/netbox/netbox/reports/
# sudo chown --recursive netbox /opt/netbox/netbox/scripts/

8 – Alterando o arquivo de configuração

O próximo passo será alterar os parâmetros no arquivo de configuração, acesse o diretório do Netbox e copie o arquivo de configuration_example.py para configuration.py.

# cd /opt/netbox/netbox/netbox/
# sudo cp configuration_example.py configuration.py

Antes de editar o arquivo de configuração, vamos gerar uma chave secreta assim otimizamos o processo de instalação.

Gere a secret_key.

# python3 ../generate_secret_key.py

A saída deverá ser assim:

YqRiPW*#J+NQY$#$05flQ9W62nrzeOB$Y1dxgZDE&xL!&W$3wR

Salve essa chave secreta pois iremos utilizar ela no arquivo de configuração.

Agora sim abra o arquivo configuration.py com o seu editor de textos preferido e altere os parâmetros abaixo:

Se você precisa de uma infraestrutura Cloud Nacional que dispõe de Servidor VPS e Dedicado robustos, com alta disponibilidade e segurança, entre em contato com o nosso Time de Vendas clicando aqui.

Parâmetro 1.

Coloque o IP do seu servidor, isso indica que apenas ele terá as devidas permissões de acesso aos dados do banco do Netbox.

ALLOWED_HOSTS = ['IP-DO-SEU-SERVIDOR']

Parâmetro 2.

Altere o nome do banco de dados, usuário e senha que foram criados no inicio do processo.

DATABASE
	DATABASE = {
    'ENGINE': 'django.db.backends.postgresql',  # Database engine
    'NAME': 'NOME-DO-BANCO',         # Nome do banco de dados que você criou
    'USER': 'USUÁRIO-DO-BANCO',               # Usuário do banco de dados que você criou
    'PASSWORD': 'SENHA-DO-USUARIO-DO-BANCO',           # Senha do usuário do banco de dados
    'HOST': 'localhost',      # Servidor do banco de dados
    'PORT': '',               # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,      # Max database connection age

Parâmetro 3.

Insira a secret key que foi gerada anteriormente.

SECRET_KEY = 'YqRiPW*#J+NQY$#$05flQ9W62nrzeOB$Y1dxgZDE&xL!&W$3wR'

Parâmetro 4.

Troque de False para True, isso faz com que ao acessar a página do Netbox um usuário e senha seja exigido para a visualização do painel.

LOGIN_REQUIRED = True

9 – Requisitos Opcionais

O Netbox suporta pacotes extras opcionais, os pacotes devem estar listados no arquivo local_requirements.txt. Vamos adicionar um sistema de arquivos remoto instalando a biblioteca django-sotrages.

# sudo sh -c "echo 'django-storages' >> /opt/netbox/local_requirements.txt"

10 – Atualizando o script de instalação

Execute o script de atualização para conseguir continuar com a instalação. Aqui processos como a criação de um ambiente virtual do python, pacotes necessários do python, migração do schema do banco de dados etc serão executados.

# sudo /opt/netbox/upgrade.sh

11 – Criando o super usuário padrão

Por padrão não existe uma conta de usuário configurada para o Netbox, por isso agora iremos acessar o ambiente virtual do python para criar um super usuário.

Acesse o ambiente virtual (venv).

# source /opt/netbox/venv/bin/activate

Acesse o diretório para criar o usuário.

# cd /opt/netbox/netbox

Crie o usuário inserindo o comando e os dados pedidos abaixo.

Se quiser continuar usando o usuário padrão do seu Linux apenas pressione enter, depois informe a senha e e-mail preferidos.

# python3 manage.py createsuperuser

12 – Configurando a tarefa de limpeza

Ainda dentro do ambiente virtual do python, vamos configurar uma tarefa de limpeza de tarefas comuns do Netbox.

# sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

13 – Testando o ambiente

Para saber se o ambiente está funcionando corretamente, vamos iniciar um servidor de teste da aplicação.

# python3 manage.py runserver 0.0.0.0:8000 --insecure

Abra o navegador e coloque http://IP:8000 para abrir a página de login do Netbox.

Para parar o servidor de teste, pressione ctrl + c.

Saia do ambiente virtual do python para continuarmos com a execução da instalação.

# deactivate

Se você precisa de uma infraestrutura Cloud Nacional que dispõe de Servidor VPS e Dedicado robustos, com alta disponibilidade e segurança, entre em contato com o nosso Time de Vendas clicando aqui.

14 – Editando o Gunicorn

Vamos agora configurar o Gunicorn que é um servidor web próprio para servir aplicativos python como é o caso do Netbox.

Durante o processo de instalação do Netbox ele instala o Gunicorn automaticamente, então vamos precisar alterar o local do arquivo de configuração.

Vamos copiar o arquivo de configuração para conseguirmos utilizar corretamente sem problemas.

sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

Para ser possível a administração do processo do Gunicorn e do Gunicorn , vamos precisar copiar os arquivos de serviço para o diretório do Gunicorn , logo depois reinicie o serviço do systemd.

# sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
# sudo systemctl daemon-reload

Inicie o serviços e confira se o status está Active running.

# sudo systemctl start netbox netbox-rq
# sudo systemctl enable netbox netbox-rq
# systemctl status netbox.service

15 – Servidor HTTP Apache

Apesar de possuir o Gunicorn ele não é um servidor web completo como NGINX ou Apache, em nosso cenário iremos instalar o Apache2 para trabalhar como um servidor web e implementar um Certificado SSL auto-assinado, mas se possível utilize um certificado uma autoridade confiável.

Gere o Certificado SSL auto-assinado.

# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/netbox.key \
-out /etc/ssl/certs/netbox.crt

Após o comando alguns detalhes serão solicitados, insira eles para conseguir gerar corretamente.

Instale o servidor web Apache.

# sudo apt install -y apache2

Copie o arquivo de configuração padrão do apache para o diretório sites-available e já passando o parâmetro de alteração do nome.

# sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf

Habilite os módulos de suporte ao SSL, arquivo de configuração netbox e depois reinicie o serviço do Apache.

# sudo a2enmod ssl proxy proxy_http headers rewrite
# sudo a2ensite netbox
# sudo systemctl restart apache2

Finalmente, acesso o navegador web com o IP do seu servidor e confirme se a tela de login do Netbox irá aparecer para você.

Para continuar acompanhando os nossos conteúdos, adicione o blog nos favoritos e não esqueça de nos seguir em nossas redes sociais. Até a próxima!

Você pode gostar...