Aprenda a instalar um dos melhores Looking Glasses de código aberto: o Hyperglass

O que é o Hyperglass

O hyperglass é um espelho de rede de código aberto escrito por um engenheiro de rede para outros engenheiros de rede. O objetivo de um espelho é fornecer aos clientes, colegas e completos estranhos uma visibilidade autônoma da rede de uma operadora. A hyperglass foi criada com o grande objetivo de beneficiar a comunidade da Internet em geral, fornecendo uma maneira mais rápida, fácil e segura para as operadoras fornecerem serviços de espelhos a seus clientes, colegas e outras operadoras de rede.

Recursos:
– Rota BGP
– BGP Community
– BGP AS Path
– Ping
– Traceroute

Suporte para:
– Arista EOS
– BIRD
– Cisco IOS-XR
– Cisco IOS/IOS-XE
– Cisco NX-OS
– FRRouting
– Huawei
– Juniper JunOS
– Mikrotik
– Nokia SR OS
– TNSR
– VyOS

Personalização recursos, tema, texto da UI/API, mensagens de erro e comandos.

Ao decorrer do tutorial irei deixar todos os links com referencia a documentação https://hyperglass.dev/docs/, pois o mesmo tem muita possibilidades.

Notas e agradecimento

O hyperglass é tem sua principal base desenvolvida em Python e está disponível no github.com por thatmattlove, no entanto conta com um grupo no telegram onde encontrei algumas soluções para huawei, meu conhecimento em Python é limitado (ainda), mas criei meu próprio fork do projeto, e realizei algumas alterações. Deixar aqui uma agradecimento a eaitelecomunicacoes onde encontrei uma contribuição que me ajudou muito. Contamos com ajuda de todos para tornar o projeto algo ainda melhor! Se tiver melhorias nao deixe de realizar um Pull requests.

Distribuição Linux

Todos meus testes foram realizando em cima do Debian 11
– Instalação do Debian 11 Bullseye limpa passo-a-passo

Acesse seu servidor e se torne root da forma correta:

# su -

Pacotes necessários

# apt install -y python3-dev python3-pip python3-pil python3-pil.imagetk\
 python3-libtiff python3-glymur libtiff-dev libfreetype-dev liblcms2-2\
 liblcms2-utils libwebp-dev libboost-dev libimagequant-dev libraqm-dev\
 libjpeg-dev wget unzip zip git curl gnupg2

Script de instalação

# cd /tmp
# wget https://raw.githubusercontent.com/remontti/hyperglass/main/install.sh
# bash install.sh

Ao finalize execute o comando hyperglass –help para ver se a instalação esta funcionando.

# hyperglass --help
Usage: hyperglass [OPTIONS] COMMAND [ARGS]...

   hyperglass Command Line Interface

Options:
   -v, --version  🔢 hyperglass version
   -h, --help     🙏 Show this help message

Commands:
   build-ui     🦋 Create a new UI build
   clear-cache  🧼 Clear the Redis cache
   secret       🔒 Generate agent secret
   setup        🧰 Run the setup wizard
   start        🚀 Start web server
   system-info  🌡  Get system information for a bug report

Configurando hyperglass

# hyperglass setup

Vamos definir o diretório de configurações, selecione com a seta para baixo /etc/hyperglass

[?] Choose a directory for hyperglass: /etc/hyperglass
   /root/hyperglass
 > /etc/hyperglass

Antes de deixar você chanar no erro webpack:

[ERROR] 20230330 10:02:32 | hyperglass.util.frontend:401 | build_frontend → 
Messages:
info  - Using webpack 5. Reason: future.webpack5 option enabled https://nextjs.org/docs/messages/webpack5

Vamos a solução localize `webpack5: true,` e altere para `webpack5: false,`

# sed -i 's/webpack5: true,/webpack5: false,/g' /usr/local/lib/python3.9/dist-packages/hyperglass/ui/next.config.js

Parâmetros de configuração

Crie o arquivo /etc/hyperglass/hyperglass.yaml

# vim /etc/hyperglass/hyperglass.yaml

Ajuste suas informações. Doc.

# https://hyperglass.dev/docs/parameters
debug: false
developer_mode: false
org_name: Remontti Telecom
primary_asn: 12345
site_title: Looking Glass Remontti
site_description: "{org_name} Network Looking Glass"
site_keywords: [hyperglass, looking glass, routing, bgp]
request_timeout: 30
listen_address: "172.18.18.79"  # IP que ira startar o serviço
listen_port: 80  # Porta do servico
#
# https://hyperglass.dev/docs/response-caching
cache:
  database: 0
  host: localhost
  port: 6379
  show_text: true
  timeout: 120
#
# https://hyperglass.dev/docs/messages/
messages:
  acl_denied: "{target} is a member of {denied_network}, which is not allowed."
  acl_not_allowed: "{target} is not allowed."
  authentication_error: Authentication error occurred.
  connection_error: "Error connecting to {device_name}: {error}"
  feature_not_enabled: "{feature} is not enabled for {device_name}."
  general: Something went wrong.
  invalid_field: "{input} is an invalid {field}."
  invalid_input: "{target} is not a valid {query_type} target."
  no_input: "{field} must be specified."
  no_output: The query completed, but no matching results were found.
  no_response: No response.
  parsing_error: An error occurred while parsing the query output.
  request_timeout: Request timed out.
  vrf_not_associated: VRF {vrf_name} is not associated with {device_name}.
  vrf_not_found: VRF {vrf_name} is not defined.
#
# https://hyperglass.dev/docs/logging/ (/var/log/hyperglass.log)
logging:
  directory: /var/log
  format: text
  max_size: 50 MB
#
# https://hyperglass.dev/docs/query-settings/
queries:
  bgp_route:
    display_name: BGP Route
    enable: true
  bgp_community:
    #Huwei modo structured não fuciona
    display_name: BGP Community
    enable: false
    mode: select
    communities:
      - community: 12345:666
        display_name: Blackhole
        description: 12345:666
  bgp_aspath:
    #Huwei modo structured não fuciona
    display_name: BGP AS Path
    enable: false
    pattern:
      asdot: '^(\^|^\_)((\d+\.\d+)\_|(\d+\.\d+)\$|(\d+\.\d+)\(\_\.\+\_\))+$'
      asplain: '^(\^|^\_)(\d+\_|\d+\$|\d+\(\_\.\+\_\))+$'
      mode: asplain
  ping:
    display_name: Ping
    enable: true
  traceroute:
    display_name: Traceroute
    enable: true
    #
# https://hyperglass.dev/docs/table-output/
structured:
  rpki:
    mode: external

#  communities:
#    #Para não exibir nenhuma communities    
#    mode: deny

#  communities:
#    # Para permitir apenas...
#    mode: permit
#    items:
#      - '65000:\d+'
#      - '65[1-4]00:\d+'

# https://hyperglass.dev/docs/ui/configuration/
web:
  links:
    - title: PeeringDB
      url: https://www.peeringdb.com/asn/12345
      side: left
      order: 1
    - title: Qrator
      url: https://radar.qrator.net/AS12345
      side: left
      order: 2
    - title: RADb
      url: https://www.radb.net/query?advanced_query=&keywords=AS12345
      side: left
      order: 3
    - title: IRR Explorer
      url: https://irrexplorer.nlnog.net/asn/AS12345
      side: left
      order: 4
    - title: RDAP
      url: https://rdap.registro.br/autnum/12345
      side: left
      order: 5    
    - title: Remontti
      url: https://www.remontti.com.br
      side: right
      order: 0
  menus:
    - title: Contato
      content: "Please contact [noc@remontti.com.br](mailto:noc@remontti.com.br) to get support."
      side: right
    - title: Termos e Condições
      content: /etc/hyperglass/terms-and-conditions.md
      side: right
  # https://hyperglass.dev/docs/ui/logo
  logo:
    dark: /etc/hyperglass/static/images/hyperglass-dark.svg
    light: /etc/hyperglass/static/images/hyperglass-light.svg
    favicon: /etc/hyperglass/static/images/hyperglass-icon.svg
    height: null
    width: 100%
  # https://hyperglass.dev/docs/ui/text
  text:
    cache_icon: Cached from {time} UTC
    cache_prefix: "Results cached for "
    complete_time: Completed in {seconds}
    fqdn_error: Unable to resolve {fqdn}
    fqdn_error_button: Try Again
    fqdn_message: Your browser has resolved {fqdn} to
    fqdn_tooltip: Use {protocol}
    no_communities: No Communities
    query_location: Location
    query_target: Target
    query_type: Query Type
    query_vrf: Routing Table
    rpki_invalid: Invalid
    rpki_unknown: No ROAs Exist
    rpki_unverified: Not Verified
    rpki_valid: Valid
    subtitle: Network Looking Glass
    title: hyperglass
    title_mode: logo_subtitle
  # https://hyperglass.dev/docs/ui/theme
  # https://hyperglass.dev/docs/ui/example

Adicionando Dispositivos

Para adicionar seus dispositivos para cunsultas LG, crie o arquivo /etc/hyperglass/devices.yaml. Vou deixar um exemplo básico para Huawei, Mikrotik e comando personalizados com Linux. Docs

# vim /etc/hyperglass/devices.yaml

Adicione de acordo suas configurações

# https://hyperglass.dev/docs/adding-devices
routers:
  - name: AS12345 Remontti
    address: 10.50.50.25
    network:
      name: as12345
      display_name: Huawei
    credential:
      username: lookingglass
      password: supersenha
    port: 22
    nos: huawei
    vrfs:
      - name: global
        default: true
        ipv4:
          source_address: 200.200.200.200
          access_list:
            - network: 10.0.0.0/8
              action: deny
            - network: 192.168.0.0/16
              action: deny
            - network: 100.64.0.0/10
              action: deny
            - network: 172.16.0.0/12
              action: deny
            - network: 0.0.0.0/0
              action: permit
              ge: 8
              le: 32
        ipv6:
          source_address: 2000:2000:1::1
          access_list:
            - network: ::/0
              action: permit
              ge: 32
              le: 128

  - name: Mkzao Remontti
    address: 172.18.18.1
    network:
      name: routerosrr
      display_name: Mikrotik
    credential:
      username: usuario
      password: senha
    port: 22
    nos: mikrotik_routeros
    vrfs:
      - name: global
        default: true
        ipv4:
          source_address: 172.18.18.1
        ipv6:
          source_address: 2001:db8::2

  - name: Localhost Hyperglass
    address: 127.0.0.1
    network:
      name: test1
      display_name: Linux
    credential:
      username: usuario
      password: senha
    nos: linux
    commands: linux_comando_personlizado
    vrfs:
      - name: global
        default: true
        ipv4:
          source_address: 192.168.0.5
        ipv6:
          source_address: 2001:db8:bebe:cafe:5

Comandos personalizados

# vim /etc/hyperglass/commands.yaml

Acima adicionei um device linux, qual temos comandos personalizado, segue um exemplo de como seria. Crie o arquivo /etc/hyperglass/commands.yaml

#https://hyperglass.dev/docs/commands
linux_comando_personlizado:
  ipv4_default:
    bgp_route: 'echo bgp_route "{target}"'
    bgp_aspath: 'echo bgp_aspath "{target}"'
    bgp_community: 'echo bgp_community "{target}"'
    ping: 'ping -c 4 "{target}"'
    traceroute: 'traceroute -n "{target}"'
  ipv6_default:
    bgp_route: 'echo "{target}"'
    bgp_aspath: 'echo "{target}"'
    bgp_community: 'echo "{target}"'
    ping: 'echo "{target}"'
    traceroute: 'echo "{target}"'
  ipv4_vpn:
    bgp_route: 'echo "{vrf} {target}"'
    bgp_aspath: 'echo "{vrf} {target}"'
    bgp_community: 'echo "{vrf} {target}"'
    ping: 'echo "{vrf} {target}"'
    traceroute: 'echo "{vrf} {target}"'
  ipv6_vpn:
    bgp_route: 'echo "{vrf} {target}"'
    bgp_aspath: 'echo "{vrf} {target}"'
    bgp_community: 'echo "{vrf} {target}"'
    ping: 'echo "{vrf} {target}"'
    traceroute: 'echo "{vrf} {target}"'

Crie um arquivo para seis termos:

# vim /etc/hyperglass/terms-and-conditions.md

Descreva de acordo suas políticas.

Ao usar {site_title}, você concorda em cumprir os seguintes termos de uso:

Todas as consultas executadas nesta página são registradas para análise e solução de problemas. 
Os usuários estão proibidos de automatizar consultas ou tentar processar consultas em massa. Este serviço é fornecido com base no melhor esforço, e {org_name} não oferece garantias ou garantias de disponibilidade ou desempenho.

Agora vamos a construção da interface do usuário. o Comando a baixo pode levar uns minutinho.

# cd /etc/hyperglass/
# hyperglass build-ui

Aguarde até ter a resposta:

[SUCCESS] 20230329 21:36:48 | hyperglass.util.frontend:386 | build_frontend → Completed UI build
✅ Completed UI build in production mode

Iniciando o serviço

Poderíamos iniciar com o comando `hyperglass start`, mas vamos criar um serviço no linux para fazer esse trabalho, para deixar até mesmo automatizado durante o boot. para isso irei criar uma pasta /etc/hyperglass/service/ onde irei criar nosso serviço.

# mkdir /etc/hyperglass/service/
# vim /etc/hyperglass/service/hyperglass.service

Agora vamos instruir o que deve ser feito.

[Unit]
Description=hyperglass
After=network.target
Requires=redis-server.service

[Service]
User=root
Group=root
ExecStart=/usr/local/bin/hyperglass start
ExecStop=/usr/bin/pkill -f hyperglass

TimeoutStartSec=120
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

Vamos cria um apontamento, recarecar nosso daemon, dar um enable para deixar iniciando com o boot, em seguida vamos iniciar o serviço.

# ln -s /etc/hyperglass/service/hyperglass.service /etc/systemd/system/hyperglass.service
# systemctl daemon-reload
# systemctl enable hyperglass 
# systemctl start hyperglass
# systemctl status hyperglass

Pode levar um minutinho até iniciar, você pode acompanhar os logs.

# tail -f /var/log/hyperglass.log

Quando aparecer a mensagem a baixo você pode acessar em seu navegador:

...Started hyperglass 1.0.4 on http://SEUIP:PORTA with 6 workers

Pode verificar também as portas que estão sendo ouvidas.

# ss -putan  | grep LISTEN | grep hyperglass

Acesse me seu navegador http://SEUIP:PORTA

Bonus: Proxy Nginx + Https

É bem comum querer executar o hyperglass em outra porta e somente para localhost, e criar um proxy para acesso web bem como ativar suporte https para sua página, pois em alguns casos ele pode esta rodando junto com outros serviços sem problema algum. Não é necessário ter uma “VM” só para isso. Vamos ao exemplo

# vim /etc/hyperglass/hyperglass.yaml

Altere o IP em listen_address para nosso endereço da loopback 127.0.0.1 e defina outra porta listen_port que ira rodar o serviço, no meu caso vou usar 58000

listen_address: "127.0.0.1"
listen_port: 58000

Reinicie o hyperglass

systemctl restart hyperglass

Instale o Nxgix

# apt install nginx
# sed -i 's/# server_tokens/server_tokens/' /etc/nginx/nginx.conf

Em alguns caso recomendo deletar as conf padrões, caso tiver problemas.

# rm /etc/nginx/sites-enabled/default

Crie um arquivo de configuração o nginx criar um proxy do nosso hyperglass

# vim /etc/nginx/sites-available/hyperglass.conf

Adicione

server {
  listen 80;
  listen [::]:80;
  server_name lg.remontti.com.br;
  #server_name _;

  # Descomente para deixar restrito apenas para determinados prefixos ou IPs.
  #allow  192.168.87.0/24;
  #allow  127.0.0.1;
  #allow  2001:0db8::/32;
  #allow  ::1;
  #deny   all;
  #error_page  403   http://www.remontti.com.br;

  client_max_body_size 2M;
  root /etc/hyperglass/static;

  location / {
    try_files $uri $uri/ /ui /ui/$uri =404;
    index /ui/index.html;
  }

  location /openapi.json {
      try_files $uri @proxy_to_app;
  }

  location /custom/ {
      try_files $uri $uri/ /custom;
  }

  location /images/ {
      try_files $uri $uri/ /images;
  }

  location /api {
      try_files $uri @proxy_to_app;
  }

  location @proxy_to_app {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:58000;
  }
}

Link o arquivo no diretório /etc/nginx/sites-enabled qual será carregado ao iniciar o nginx, em seguira reinicie o serviço do nginx.

# ln -s /etc/nginx/sites-available/hyperglass.conf /etc/nginx/sites-enabled/hyperglass.conf
# systemctl restart nginx

Agora você já pode acessar seu hyperglass através do nginx.

Criando certificado

Ao executar o Certbot instalado via apt tive alguns erros do python, acredito que conflitou alguma coisa com o hyperglass, (como meu tempo é bem curto inclusive para esta escrevendo aqui) realizei a instalação via snap qual resolveu meu problema.
Segue a instalação do snap:

# apt install snapd
# snap install core

Instale o certbot via snap, crie um link em nossos binários, em seguida execute ele.

# snap install --classic certbot
# ln -s /snap/bin/certbot /usr/bin/certbot
# certbot

Informe os dados, ao finalizar o mesmo irá já ajustar seu arquivo do nginx, e basta acessar seu domínio.

Não esqueça que a cada 90 dias o certificado expira, então crie uma rotina para renovação, você pode adicionar ao cron agendando por exemplo para todo dia primeiro tentar renovar.

# echo '00 00   1 * *   root     certbot renew -q' >> /etc/crontab
# systemctl restart cron

Parabéns você finalizou! Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Prints

Abraço!

Fontes:
https://hyperglass.dev/
https://hyperglass.dev/docs/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

17 Resultados

  1. João Gabriel disse:

    Tentei realizar a instalação pelo Debian 12, não obtive êxito.

  2. Thiago Lima disse:

    Fala Remontti, consegue atualizar o script?
    Até o node 14 está depreciado.

    Desde já agradeço!

    • Reginaldo disse:

      Estou tentando instalar agora e não está indo mesmo, chego no comando de hyperglass setup não encontra. Nessecita de atualiazação memsmo!

  3. Lucas disse:

    O meu não está aparecendo a table de BGP Route, está aparecendo o resultado do equipamento

  4. Olá ,

    Vejo seu site http://www.remontti.com.br e é impressionante. Gostaria de saber se opções de publicidade como guest post, conteúdo de anúncios estão disponíveis em seu site?

    Qual é o preço se quisermos anunciar em seu site?

    Observação: o artigo não deve ter nenhuma marca como  patrocinado ou anunciado ou parecido e só podemos pagar por paypal.

    Felicidades
    Gael Kerdanet 

  5. Emanuel disse:

    Ola!
    No huawei F1A não consegue realizar as consultas retornar o erro Something went wrong! Porém nos logs mosrta a consutla feita e retornando resultados do rotador

  6. Ola, rodando porém ao tentar consultar rotas bgp com huaiwe sempre retorna o erro Something went wrong.

  7. Marcelo Ramos disse:

    Boa noite,

    Fiz a instalação e integração com um NE40, MX10003 e um Cisco IOSXR. Em todos tenho o erro de Forbidden quando tento usar a função de traceroute. Já rota BGP e Ping funcionam perfeitamente. Alguém passou por esse problema?

    No arquivo de logs nem aparece nada quando executo a ação de tracert. Já bgp route e ping loga sem problemas.

  8. William Nunes Rios disse:

    Fiz toda a instalação e as consultar ipv4 está perfeitas, porem a ipv6 sempre me da uma mensagem dessa IPv6 is not enabled e não consigo fazer funcionar.

  9. Andre disse:

    No meu apareceu o seguinte erro:

    [WARNING] 20230407 17:22:11 | hyperglass.models.config.vrf:239 | set_dynamic → You have set the VRF name to ‘default’. This is no longer the way to
    designate a VRF as the default (or global routing table) VRF. Instead,
    add ‘default: true’ to the VRF definition.

    [INFO] 20230407 17:22:11 | hyperglass.configuration.main:39 | → Configuration directory: /etc/hyperglass
    Traceback (most recent call last):
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/configuration/main.py”, line 105, in _config_optional
    [ERROR] 20230407 17:22:11 | hyperglass.exceptions:38 | __init__ → [WARNING]
    config = yaml.safe_load(cf) or {}
    File “/usr/local/lib/python3.9/dist-packages/yaml/__init__.py”, line 125, in safe_load
    return load(stream, SafeLoader)
    File “/usr/local/lib/python3.9/dist-packages/yaml/__init__.py”, line 81, in load
    return loader.get_single_data()
    File “/usr/local/lib/python3.9/dist-packages/yaml/constructor.py”, line 49, in get_single_data
    node = self.get_single_node()
    File “/usr/local/lib/python3.9/dist-packages/yaml/composer.py”, line 36, in get_single_node
    document = self.compose_document()
    File “/usr/local/lib/python3.9/dist-packages/yaml/composer.py”, line 58, in compose_document
    self.get_event()
    File “/usr/local/lib/python3.9/dist-packages/yaml/parser.py”, line 118, in get_event
    self.current_event = self.state()
    File “/usr/local/lib/python3.9/dist-packages/yaml/parser.py”, line 193, in parse_document_end
    token = self.peek_token()
    File “/usr/local/lib/python3.9/dist-packages/yaml/scanner.py”, line 129, in peek_token
    self.fetch_more_tokens()
    File “/usr/local/lib/python3.9/dist-packages/yaml/scanner.py”, line 223, in fetch_more_tokens
    return self.fetch_value()
    File “/usr/local/lib/python3.9/dist-packages/yaml/scanner.py”, line 577, in fetch_value
    raise ScannerError(None, None,
    yaml.scanner.ScannerError: mapping values are not allowed here
    in “/etc/hyperglass/commands.yaml”, line 2, column 15

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “/usr/local/bin/hyperglass”, line 8, in
    sys.exit(CLI())
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1130, in __call__
    return self.main(*args, **kwargs)
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1055, in main
    rv = self.invoke(ctx)
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 760, in invoke
    return __callback(*args, **kwargs)
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/cli/commands.py”, line 70, in build_frontend
    return build_ui(timeout)
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/cli/util.py”, line 68, in build_ui
    from hyperglass.configuration import CONFIG_PATH, params, frontend_params
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/configuration/__init__.py”, line 4, in
    from .main import (
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/configuration/main.py”, line 131, in
    _user_commands = _config_optional(CONFIG_COMMANDS)
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/configuration/main.py”, line 108, in _config_optional
    raise ConfigError(error_msg=str(yaml_error))

  10. Paulo Morais disse:

    Excelente material como sempre, parabéns pelo conteúdo, espero colocar um desses pra rodar em breve.

  11. William disse:

    Show de bola, esse conteúdo já está com suporte a consulta por ipv6?

  12. Bruno disse:

    Muito bom o conteudo, está de parabens!!!
    Mas se puderem ajudar, fiz o procedimento, mas apresenta o erro:

    root@hyperglass:/etc/hyperglass# hyperglass build-ui
    [WARNING] 20230401 09:08:12 | hyperglass.models.config.vrf:239 | set_dynamic → You have set the VRF name to ‘default’. This is no longer the way to
    designate a VRF as the default (or global routing table) VRF. Instead,
    add ‘default: true’ to the VRF definition.

    [INFO] 20230401 09:08:12 | hyperglass.configuration.main:39 | → Configuration directory: /etc/hyperglass
    [ERROR] 20230401 09:08:12 | hyperglass.configuration.validation:47 | validate_config → 1 validation error for Device
    vrfs -> ipv6 -> source_address
    value is not a valid IPv6 address (type=value_error.ipv6address)
    [ERROR] 20230401 09:08:12 | hyperglass.exceptions:38 | __init__ → [WARNING]

    Field: vrfs → ipv6 → source_address
    Error: value is not a valid IPv6 address

    Traceback (most recent call last):
    File “/usr/local/bin/hyperglass”, line 8, in
    sys.exit(CLI())
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1130, in __call__
    return self.main(*args, **kwargs)
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1055, in main
    rv = self.invoke(ctx)
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File “/usr/local/lib/python3.9/dist-packages/click/core.py”, line 760, in invoke
    return __callback(*args, **kwargs)
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/cli/commands.py”, line 70, in build_frontend
    return build_ui(timeout)
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/cli/util.py”, line 68, in build_ui
    from hyperglass.configuration import CONFIG_PATH, params, frontend_params
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/configuration/__init__.py”, line 4, in
    from .main import (
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/configuration/main.py”, line 138, in
    devices = validate_config(config=_user_devices.get(“routers”, []), importer=Devices)
    File “/usr/local/lib/python3.9/dist-packages/hyperglass/configuration/validation.py”, line 48, in validate_config
    raise ConfigInvalid(err.errors()) from None
    hyperglass.exceptions.ConfigInvalid:

    Field: vrfs → ipv6 → source_address
    Error: value is not a valid IPv6 address

  13. João Paulo disse:

    Muito bom!, obrigado por compartilhar mais uma vez!!!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *