Backups com Oxidized

Introdução

Eu apostos que você já teve problema com um equipamento, e ao procurar o backup… SURPRESA! Não tem backup. Ou ele é tão velho que sem chance de ser aproveitado. E lá vai você reconfigurar tudo na mão de novo.

Existem várias soluções para backup centralizado dos ativos de rede disponível. Normalmente é assim:

  1. Você nem se preocupa com backup. Mas um dia é invadido ou o equipamento queima e tão logo você arruma ele, daquele jeito, você procurar uma solução;
  2. E a solução é um script 0800 da internet. Pega ele, nem analisa, coloca para rodar, mas você nunca se preocupa se ele está rodando ou não. Ou ainda se tem espaço disponível no dispositivo E no servidor;
  3. Você começa a ter um monte de coisas na rede, e ainda não tem uma política de backup, mas já percebe que isso é uma mão na roda quando dá pau, e resolve investir nem que seja em um script guardando tudo num repositório SVN ou GIT.
  4. Por fim você finalmente resolve adotar uma ferramenta, uma solução de backup, e desenvolve uma política de manutenção desses backups.

Quando chega nesse ponto você tem desde soluções pagas como o Unimus e Kiwi CatTools, e outras opensource tais como RANCID e Oxidized. Hoje vou falar sobre este último, que tenho utilizado mais.

Oxidized

Desenvolvido pelo Saku Ytti e pelo Samer Abdel-Hafez e visa subistituir o RANCID. Ele tem a pretensão de ser mais leve e totalmente customizável. Se você não encontrar nada nos 90 models já desenvolvidos, você pode fazer o seu. Ele tem um formato que permite armazenar as informações em arquivo ou em banco, e guardar os arquivos no armazenamento local, em armazenamento remoto e até em um repositório GIT, implementando versionamento.

Ele é todo escrito em Ruby, e modelar. É bastante simples de implementar. Se você quiser mais informação pode conseguir no site do projeto: https://github.com/ytti/oxidized.

Mas vamos lá, ensinar como é que instala isso.

Instalação

Este cake recipe é focado no ambiente Debian. Eu gosto de trabalhar com o CentOS na base de KVMs e o Ubuntu/Debian nas máquinas que rodam sobre o Domu0. Não tem certo ou errado, eu só prefiro assim.

Então para começar, vamos instalar as dependências no sistema:


sudo apt update
sudo apt install -y ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libicu-dev libssh2-1-dev

E agora instalamos o Oxidized e uma aplicação WEB para facilitar o acesso:


sudo gem install oxidized
sudo gem install oxidized-web

Configuração

Não é recomendado utilizar o root como usuário para capturar backups, e por motivos obvio. Vamos criar então um usuário especifico para o oxidized. Já notei que quando pula esse passo e utiliza um usuário já existente, muitas vezes a operação fica inconstante, com a aplicação fechando costantemente. Então recomendo utilizar esse usuário específico.


sudo useradd oxidized
sudo chsh -s /usr/sbin/nologin oxidized
sudo mkdir -p /opt/oxidized/{output,.config/oxidized/}
sudo usermod -m -d /opt/oxidized oxidized

E também vamos configurar o ambiente para ele saber qual a pasta padrão do Oxidized.

echo "OXIDIZED_HOME=/opt/oxidized" | sudo tee --append /etc/environment

Agora é preciso criar o arquivo /opt/oxidized/.config/oxidized/config. Ele é um arquivo padrão YAML.

---
username: username
password: password
model: RouterOS
resolve_dns: true
interval: 3600
use_syslog: true
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 192.168.0.1:8888
next_adds_job: false
vars: {}
groups:
  mikrotik:
    username: admin
    password: admin
  ubiquiti:
    username: ubnt
    password: ubnt
  olthuawei:
    username: admin
    password: admin
models: {}
pid: "/opt/oxidized/.config/oxidized/pid"
stats:
  history_size: 10
input:
  default: ssh, telnet
  debug: false
  ssh:
    secure: false
  ftp:
    passive: true
  utf8_encoded: true
output:
  default: file
  file:
    directory: "/opt/oxidized/.config/oxidized/configs/"
source:
  default: csv
  csv:
    file: "/opt/oxidized/.config/oxidized/router.db"
    delimiter: !ruby/regexp /:/
    map:
      name: 0
      model: 1
      group: 2
    vars_map:
      ssh_port: 3
    gpg: false
model_map:
  cisco: ios
  juniper: junos

Deve-se criar também o arquivo router.db, dos roteadores, em /opt/oxidized/.config/oxidized/router.db.

# ip/hostname:model:group:porta
10.0.0.1:routeros:mikrotik:2022
10.1.0.1:routeros:mikrotik:22

Depois de escrever tudo, basta arrumar as permissões:

sudo chown -R oxidized:oxidized /opt/oxidized

Implementando o Serviço Oxidized

Agora basta criar um script de serviço para facilitar o inicio e reinicio do Oxidized. Pode-se criar um arquivo em /lib/systemd/system/oxidized.service.

# /lib/systemd/system/oxidized.service
[Unit]
Description=Oxidized - Network Device Configuration Backup Tool
After=network-online.target multi-user.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/oxidized
User=oxidized
KillSignal=SIGKILL

[Install]
WantedBy=multi-user.target

Depois disso basta iniciar e habilitar o serviço para iniciar com o computador:

sudo systemctl start oxidized.service
sudo systemctl enable oxidized.service

Jabá

Precisa que implementem uma solução de backup nos seus ativos, com automatização, e versionamento automático. Fala conosco! A especialidade da NZM é implementar soluções para fazer o seu provedor funcionar melhor.

Manda um email para atendimento@nzm.net.br, ou um Zap no fone 42 98802-9705.

Fontes

Fonte utilizadas para escrever esse artigo:



Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.