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/










Tentei realizar a instalação pelo Debian 12, não obtive êxito.
Fala Remontti, consegue atualizar o script?
Até o node 14 está depreciado.
Desde já agradeço!
Estou tentando instalar agora e não está indo mesmo, chego no comando de hyperglass setup não encontra. Nessecita de atualiazação memsmo!
O meu não está aparecendo a table de BGP Route, está aparecendo o resultado do equipamento
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
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
Ola, rodando porém ao tentar consultar rotas bgp com huaiwe sempre retorna o erro Something went wrong.
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.
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.
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))
Você conseguiu resolver?? o meu também só da esses erros.
Excelente material como sempre, parabéns pelo conteúdo, espero colocar um desses pra rodar em breve.
Show de bola, esse conteúdo já está com suporte a consulta por ipv6?
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
mesmo problema aqui
Respeitem as linhas nos arquivos de configurações a um espaçamentoentre as linhas nos tres arquivos de configurações, que o Python pede para respeitar. aperta este botão ao lado em cima “”, que ira ver o espaçamento.
Muito bom!, obrigado por compartilhar mais uma vez!!!