Category: Netbox

  • Proxy reverso automático en Docker

    Aunque este despliegue usa nginx-unit detrás, vamos a usar un contenedor de ayuda que nos va a gestionar proxy reverso para nuestro servicio – y otros que podamos tener a futuro – de manera automatica

    Yo uso Digital Ocean, si vos querés usarlo también dale con este link de referido que te sirve a vos y a mi
    A vos te van a dar $200 en crédito pasa usar así podés probarlo
    https://m.do.co/c/47b87a73eb62

    El repo del proyecto lo encontrás en
    https://github.com/nginx-proxy/nginx-proxy

    YouTube https://www.youtube.com/@cceste
    Instagram https://www.instagram.com/ccesteok
    Facebook https://www.facebook.com/ccesteok
    Discord https://discord.gg/ZWQVg7cgdR

  • Implementando IPAM y DCIM con netbox-docker

    Cómo levantar Netbox en tu instancia en pocos minutos, usando netbox-docker
    Hay otras maneras, pero me parece la más rápida y sencilla para que lo puedas poner en marcha

    Yo uso Digital Ocean, si vos querés usarlo también dale con este link de referido que te sirve a vos y a mi
    A vos te van a dar $200 en crédito pasa usar así podés probarlo
    https://m.do.co/c/47b87a73eb62

    El repo del proyecto está acá
    https://github.com/netbox-community/netbox-docker/

    YouTube https://www.youtube.com/@cceste
    Instagram https://www.instagram.com/ccesteok
    Facebook https://www.facebook.com/ccesteok
    Discord https://discord.gg/ZWQVg7cgdR

  • Netbox 01 – Introducción a documentación DCIM e IPAM

    Estamos en
    – YouTube https://www.youtube.com/@cceste
    – Instagram https://www.instagram.com/ccesteok
    – Facebook https://www.facebook.com/ccesteok
    – Discord https://discord.gg/ZWQVg7cgdR

    Emitido en vido Jul 30, 2023
    https://youtube.com/live/AOE5henya9s?feature=share

    00:00 Intro y musiquita
    01:22 Bienvenida
    02:13 Qué es NetBox
    04:48 Comparando con NMS
    05:24 Porqué NetBox
    08:02 También Nautobot
    09:23 Qué es DCIM
    10:42 Que se puede documentar
    11:07 Organizacion física
    12:14 Estados y comentarios
    13:25 Objetos relacionados
    14:20 Changelog y auditoría
    14:05 Racks
    15:38 Dispositivos
    16:00 Inventario
    17:52 Modelos y marcas
    18:35 Biblioteca de dispositivos
    19:24 Conexiones
    19:53 Tipos de conexiones
    20:40 Demo
    23:37 Que es IPAM
    24:04 Excel? No!
    24:14 IP, Prefijos, VLAN, VRF
    25:28 IPAM y Objetos relacionados
    26:17 VLANy Objetos relacionados
    26:56 Demo
    29:16 Servidores y VM
    29:40 Clústers
    30:27 VMs
    31:00 Circuitos Externos
    31:18 Circuitos y proveedores
    32:17 Netbox API
    32:42 Características API
    34:40 Opción In House – Baremetal o vía Docker
    35:48 Opción Cloud – NetboxLabs o ibitec.net
    36.32 Outro y musiquita

  • j2ipaddr

    Jinja2 filters for IP addresses, the easy way

    Why

    On networking and network automation, we need to extract info about IP addresses as a combination of two values:

    • a host address
    • a subnet mask

    For 10.10.10.5/24, the host address is 10.10.10.5 and the subnet mask is 255.255.255.0, and its prefix length is 24.

    There is additional information we can infer from this single item, as its network address, broadcast address.

    Useful data for network engineers are wildcards or hostmasks, network size, class, type, and so on.

    Jinja2 provides several integrated filters to work with, however it can be complicated to use complex data types.

    Ansible provides a way to work this on its ansible.utils.ipaddr collection.

    However, probably you won’t need the entire Ansible package just to be able to use it.

    This package intends to provide a set of filters and handler to the Python 3 netaddr module, on a way that is hopefully easy and lightweight to use.

    What

    Included filters are the following:

    ip_address(addr)

    Returns an IP address for a combination of IP address and subnet mask

    ip_address('10.10.10.5/24')
    > 10.10.10.5
    {{ '10.10.10.5/24 | ip_address }}
    > 10.10.10.5

    ip_prefixlen(addr)

    Returns a prefix length for a combination of IP address and subnet mask

    ip_prefixlen('10.10.10.5/24')
    > 24
    {{ '10.10.10.5/24 | ip_prefixlen }}
    > 24

    ip_netmask(addr)

    Returns a subnet mask for a combination of IP address and subnet mask

    ip_netmask('10.10.10.5/24')
    > 255.255.255.0
    {{ '10.10.10.5/24 | ip_netmask }}
    > 255.255.255.0

    ip_hostmask(addr)

    Returns a wilcard or hostmask for a combination of IP address and subnet mask

    ip_hostmask('10.10.10.5/24')
    > 0.0.0.255
    {{ '10.10.10.5/24 | ip_hostmask }}
    > 0.0.0.255

    ip_wildcard(addr)

    Alias for ip_hostmask(addr)

    ip_wildcard('10.10.10.5/24')
    > 0.0.0.255
    {{ '10.10.10.5/24 | ip_wildcard }}
    > 0.0.0.255

    ip_network(addr)

    Returns a network address for a combination of IP address and subnet mask

    ip_network('10.10.10.5/24')
    > 10.10.10.0
    {{ '10.10.10.5/24 | ip_network_hosts_size }}
    > 10.10.10.0

    ip_broadcast(addr)

    Returns a broadcast address for a combination of IP address and subnet mask

    ip_broadcast('10.10.10.5/24')
    > 10.10.10.255
    {{ '10.10.10.5/24 | ip_broadcast }}
    > 10.10.10.255

    ip_network_hosts_size(addr)

    Returns the size of the subnet for a combination of IP address and subnet mask

    ip_network_hosts_size('10.10.10.5/24')
    > 255
    {{ '10.10.10.5/24 | ip_network_hosts_size }}
    > 255

    ip_network_first(addr)

    Returns the first usable address in network address for a combination of IP address and subnet mask

    ip_network('10.10.10.5/24')
    > 10.10.10.1
    {{ '10.10.10.5/24 | ip_network_hosts_size }}
    > 10.10.10.1

    ip_network_last(addr)

    Returns the last usable address in network address for a combination of IP address and subnet mask

    ip_network('10.10.10.5/24')
    > 10.10.10.254
    {{ '10.10.10.5/24 | ip_network_hosts_size }}
    > 10.10.10.254

    How

    Simply install with pip.

    $ pip install j2ipaddr

    To insert the filters on your Jinja2 processor, simply use the following syntax. The filter name can be changed by adjusting the dict key name.

    import jinja2
    import j2ipaddr.filters
    jinja2.filters.FILTERS['ip_prefixlen'] = filters.ip_prefixlen

    Or, probably an easier way, use the following one-liner to load all the filters into your Jinja2 filters

    import jinja2
    import j2ipaddr.filters
    jinja2.filters.FILTERS = {**jinja2.filters.FILTERS, **filters.load_all()}

    On your templates, you can do this as an example:

    Variables

    host:
      interfaces:
        Te1/0/1:
          ipv4_addresses:
            - 10.10.10.5/24

    Template

    router ospf 10
      network {{host.interfaces.Te1/0/1.ipv4_addresses[0] | ip_network }} {{host.interfaces.Te1/0/1.ipv4_addresses[0] | ip_wildcard  }} area 0.0.0.0

    The output would looks like this:

    router ospf 10
      network 10.0.0.0 0.0.0.255 area 0.0.0.0

    Where

    You can find this project on

  • Contributing to Netbox devices library

    The Netbox community has launched a repository for standard devices.

    https://github.com/netbox-community/devicetype-library

    This comes handy for new and existing Netbox installations, because now you can populate your database with predefined device models for the most common networking gear manufacturers.

    I have contributed to the repository and created the entire set of MikroTik routers and switches, updated to December 2019.

    https://github.com/netbox-community/devicetype-library/tree/master/device-types/MikroTik

    Feel free to use it and contribute!
    And as always, you can find me on Github at https://github.com/baldoarturo