person Tia Zanella
calendar_add_on Created March 17, 2026
update Updated April 5, 2026
Share
download Download MD

Productor OSIRIS JSON para Cisco

El productor Cisco de OSIRIS JSON se conecta a las plataformas de infraestructura Cisco (APIC, NX-OS, IOS-XE) y genera instantáneas OSIRIS JSON de la topología de su red, dispositivos, interfaces y conexiones.

Instale el dispatcher principal y el productor Cisco:

go install go.osirisjson.org/producers/cmd/osirisjson-producer@latest
go install go.osirisjson.org/producers/cmd/osirisjson-producer-cisco@latest

El dispatcher principal le permite ejecutar osirisjson-producer cisco .... Sin él, invoque directamente el binario del proveedor como osirisjson-producer-cisco ....

Asegúrese de que $GOPATH/bin (o $HOME/go/bin) esté en su PATH. Consulte la página getting started para ver más opciones de instalación.

Plataformas compatibles

ACI / APIC

disponible

Controlador de infraestructura de políticas de aplicaciones

Transporte: API REST

NX-OS

disponible

Switches Nexus para centros de datos

Transporte: CLI NX-API

IOS-XE

disponible

Routers y switches empresariales

Transporte: NETCONF/YANG sobre SSH

Uso de la CLI

El productor Cisco utiliza una CLI de estilo dispatcher con subproductores:

osirisjson-producer cisco <subcommand> [flags]

Modo único

Conéctese a un dispositivo y guarde un documento OSIRIS JSON como cisco-<type>-<timestamp>-<hostname>.json:

# Instantánea de la fabric ACI mediante APIC
osirisjson-producer cisco apic -h 10.0.0.1 -u admin -p secret

# Instantánea de dispositivo NX-OS
osirisjson-producer cisco nxos -h switch01.example.com -u admin -p secret

# Instantánea de dispositivo IOS-XE
osirisjson-producer cisco iosxe -h router01.example.com -u admin --insecure

Si se omite -p / --password, la CLI solicita la contraseña de forma interactiva.

Modo por lotes

Recopile información de varios dispositivos listados en un archivo CSV. La salida se organiza como una estructura jerárquica de directorios: DC/Floor/Room/Zone/Hostname.json.

osirisjson-producer cisco apic -s datacenter.csv -o ./output -u admin -p secret

Genere una plantilla CSV para empezar:

osirisjson-producer cisco template --generate apic

La plantilla CSV utiliza estas columnas:

ColumnaObligatoriaDescripción
dcNombre del centro de datos (utilizado para la jerarquía de carpetas de salida)
floorIdentificador de planta
roomIdentificador de sala
zoneIdentificador de zona o pod
hostnameEtiqueta del dispositivo utilizada como nombre del archivo de salida
typeTipo de productor: apic, nxos, iosxe
ipDirección IP o FQDN del dispositivo de destino
portSustituye el puerto (predeterminado: específico del productor)
ownerself (predeterminado), isp o colo - solo metadatos del operador
notesNotas de texto libre (ignoradas por el productor)

Las credenciales se proporcionan mediante las flags -u/-p y se aplican a todos los destinos del lote.

Referencia de flags

Flags del modo único

FlagCortaDescripción
--host-hHost de destino (IP o FQDN, opcionalmente con :port)
--username-uNombre de usuario para la autenticación
--password-pContraseña (omítala para el prompt interactivo)
--port-PSustituye el puerto (predeterminado: específico del productor)
--detailNivel de detalle: minimal (predeterminado) o detailed
--insecureOmite la verificación del certificado TLS
--safe-failure-modeGestión de secretos: fail-closed (predeterminado), log-and-redact, off

Flags del modo por lotes

FlagCortaDescripción
--source-sArchivo CSV con los destinos
--output-oDirectorio de salida (jerárquico: DC/Floor/Room/Zone/Hostname.json)
--username-uNombre de usuario predeterminado para todos los destinos
--password-pContraseña predeterminada para todos los destinos

Flags globales

FlagDescripción
--version / -vMuestra la versión y sale
--helpMuestra la ayuda y sale

Qué recopila cada plataforma

ACI / APIC

El productor APIC consulta las siguientes clases MO mediante la API REST:

Modo minimal:

Clase MODescripción
fabricNodeNodos de la fabric (controladores, spines, leafs)
topSystemAtributos del sistema (uptime, estado, MAC de la fabric, MTU del plano de control)
firmwareRunningVersiones de firmware en ejecución
fvTenantDefiniciones de tenant
fvCtxContextos VRF
fvBDBridge domains
fvSubnetSubredes
fvAEPgGrupos de endpoints de aplicaciones
l3extOutConectividad externa L3
faultInstInstancias de fallo activas

El modo detailed añade:

Clase MODescripción
fvCEpEndpoints de cliente (MAC, encapsulación VLAN, asociación al leaf)

NX-OS

El productor NX-OS envía comandos CLI NX-API en solicitudes por lotes:

Modo minimal:

ComandoDescripción
show versionModelo del dispositivo, número de serie, versión del SO, uptime
show inventoryInventario de hardware (módulos, fuentes de alimentación, ventiladores)
show interface briefNombres de interfaces, estados, velocidades, VLAN
show vlan briefID de VLAN, nombres e interfaces miembro
show vrf all detailDefiniciones de VRF e interfaces miembro
show lldp neighbors detailDescubrimiento de vecinos LLDP
show vpc briefDominio vPC, estado del peer, keepalive
show port-channel summaryConfiguraciones de port-channel

El modo detailed añade:

ComandoDescripción
show interfaceEstadísticas completas de interfaces (MTU, ancho de banda, dúplex, contadores)
show system resources% de inactividad de CPU, uso de memoria, medias de carga
show environmentFuentes de alimentación, estado de ventiladores, temperaturas

IOS-XE

El productor IOS-XE utiliza RPC de NETCONF/YANG sobre SSH (puerto predeterminado 830):

Modo minimal:

Modelo YANGDescripción
Cisco-IOS-XE-nativeVersión del dispositivo y hostname
ietf-interfacesDetalles de interfaces
Cisco-IOS-XE-device-hardware-operInventario de hardware
Cisco-IOS-XE-cdp-operDescubrimiento de vecinos CDP
Cisco-IOS-XE-native (vrf)Definiciones de VRF

El modo detailed añade:

Modelo YANGDescripción
Cisco-IOS-XE-bgp-operDetalles de vecinos BGP
Cisco-IOS-XE-ospf-operProceso OSPF y estado de vecinos
Cisco-IOS-XE-process-cpu-operUtilización de CPU
Cisco-IOS-XE-memory-operEstadísticas de memoria

Estructura de salida de OSIRIS JSON

Los tres productores emiten el mismo contenedor OSIRIS JSON:

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-<platform>",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [ ... ],
    "connections": [ ... ],
    "groups": [ ... ]
  }
}

Tipos de recursos por plataforma

Los tipos de recurso siguen la especificación OSIRIS JSON v1.0. Los tipos estándar se usan donde están definidos; los tipos específicos del proveedor usan el espacio de nombres osiris.cisco.*.

IOS-XE:

  • network.router - Dispositivo principal (estándar)
  • network.interface - Interfaces físicas y lógicas (estándar)
  • osiris.cisco.interface.lag - Interfaces port-channel / LAG

NX-OS:

  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Dispositivo (clasificado por rol)
  • network.interface - Interfaces físicas y lógicas (estándar)
  • osiris.cisco.interface.lag - Port-channels

APIC:

  • osiris.cisco.controller - Controladores APIC
  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Switches de fabric
  • osiris.cisco.domain.bridge - Bridge domains
  • network.subnet - Subredes (estándar)
  • osiris.cisco.l3out - Redes externas L3
  • osiris.cisco.endpoint - Endpoints de cliente (solo en modo detailed)

Tipos de conexión

  • IOS-XE / NX-OS: physical.ethernet para enlaces entre interfaces descubiertos mediante CDP/LLDP
  • APIC: contains para la contención jerárquica de tenants, network para asociaciones de bridge domains

Tipos de grupo por plataforma

IOS-XE: logical.vrf

NX-OS: logical.vrf, network.vlan, network.vpc

APIC: logical.tenant, logical.vrf, osiris.cisco.epg

Descubrimiento de conexiones

  • IOS-XE descubre vecinos mediante CDP (Cisco Discovery Protocol)
  • NX-OS descubre vecinos mediante LLDP (Link Layer Discovery Protocol)
  • APIC utiliza jerarquía de contención (tenants -> BDs -> subredes -> EPGs) en lugar de enlaces punto a punto

Los dispositivos remotos descubiertos mediante CDP/LLDP se agregan como recursos stub con status: unknown.

Ejemplos

IOS-XE - dispositivo único, modo minimal

osirisjson-producer cisco iosxe -h 10.99.0.1 -u admin -p secret

Salida (recortada):

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-iosxe",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [
      {
        "id": "cisco-iosxe-LAB-RTR01",
        "type": "network.router",
        "name": "LAB-RTR01",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "ISR4451-X/K9",
          "version": "16.9"
        },
        "extensions": {
          "osiris.cisco": {
            "inventory": [
              { "name": "Chassis", "description": "ISR4451-X/K9", "serial": "FDO12345678" }
            ]
          }
        }
      },
      {
        "id": "cisco-iosxe-LAB-RTR01-GigabitEthernet0/0/0",
        "type": "network.interface",
        "name": "GigabitEthernet0/0/0",
        "status": "active",
        "properties": {
          "speed": "1000000000",
          "description": "WAN uplink"
        }
      }
    ],
    "connections": [
      {
        "source": "cisco-iosxe-LAB-RTR01-GigabitEthernet0/0/0",
        "target": "cisco-iosxe-stub-REMOTE-SW01-GigabitEthernet1/0/1",
        "type": "physical.ethernet",
        "status": "active"
      }
    ],
    "groups": [
      {
        "id": "cisco-iosxe-LAB-RTR01-vrf-CORP",
        "type": "logical.vrf",
        "name": "CORP",
        "members": [
          "cisco-iosxe-LAB-RTR01-GigabitEthernet0/0/0",
          "cisco-iosxe-LAB-RTR01-Loopback0"
        ]
      }
    ]
  }
}

NX-OS - dispositivo único, modo detailed

osirisjson-producer cisco nxos -h switch01.lab -u admin -p secret --detail detailed

Salida (recortada):

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-nxos",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [
      {
        "id": "cisco-nxos-LAB-SW01",
        "type": "osiris.cisco.switch.leaf",
        "name": "LAB-SW01",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "Nexus9000 C9508",
          "version": "10.3(4a)"
        },
        "extensions": {
          "osiris.cisco": {
            "bios_version": "08.40",
            "kernel_uptime": "15d 3h 22m 10s",
            "cpu_idle": 85.5,
            "load_avg_1min": 1.23,
            "memory_used": 8192,
            "memory_free": 24576,
            "power_supplies": [
              { "id": "1", "model": "NXA-PAC-1100W", "watts": 350, "status": "ok" }
            ],
            "fans": [
              { "name": "Fan1", "status": "ok" }
            ],
            "temperatures": [
              { "sensor": "SUP slot 1", "celsius": 35.5 }
            ]
          }
        }
      },
      {
        "id": "cisco-nxos-LAB-SW01-Ethernet1/1",
        "type": "network.interface",
        "name": "Ethernet1/1",
        "status": "active",
        "properties": {
          "speed": "10000000000",
          "description": "Server-facing"
        }
      }
    ],
    "connections": [
      {
        "source": "cisco-nxos-LAB-SW01-Ethernet1/1",
        "target": "cisco-nxos-stub-REMOTE-SW01-Ethernet1/49",
        "type": "physical.ethernet",
        "status": "active"
      }
    ],
    "groups": [
      {
        "id": "cisco-nxos-LAB-SW01-vlan-100",
        "type": "network.vlan",
        "name": "PROD",
        "members": ["cisco-nxos-LAB-SW01-Ethernet1/1"]
      },
      {
        "id": "cisco-nxos-LAB-SW01-vpc-10",
        "type": "network.vpc",
        "name": "vPC domain 10",
        "extensions": {
          "osiris.cisco": {
            "role": "primary",
            "peer_status": "peer-ok",
            "keepalive_status": "peer-alive"
          }
        }
      }
    ]
  }
}

APIC - instantánea de la fabric ACI

osirisjson-producer cisco apic -h 10.0.0.1 -u admin -p secret --detail detailed

Salida (recortada):

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-apic",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [
      {
        "id": "cisco-apic-apic1",
        "type": "osiris.cisco.controller",
        "name": "apic1",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "APIC-SERVER-M3",
          "version": "6.0(2h)",
          "site": "pod-1"
        }
      },
      {
        "id": "cisco-apic-spine1",
        "type": "osiris.cisco.switch.spine",
        "name": "spine1",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "N9K-C9336C-FX2",
          "version": "n9000-16.0(2h)",
          "site": "pod-1"
        },
        "extensions": {
          "osiris.cisco": {
            "fabric_mac": "AA:BB:CC:DD:EE:01",
            "control_plane_mtu": 9000,
            "faults": [
              { "code": "F1527", "severity": "warning", "description": "storage full" }
            ]
          }
        }
      },
      {
        "id": "cisco-apic-bd-bd_App",
        "type": "osiris.cisco.domain.bridge",
        "name": "bd_App",
        "status": "active"
      },
      {
        "id": "cisco-apic-subnet-10.0.0.1/24",
        "type": "network.subnet",
        "name": "10.0.0.1/24",
        "status": "active"
      },
      {
        "id": "cisco-apic-ep-AA:BB:CC:DD:EE:FF",
        "type": "osiris.cisco.endpoint",
        "name": "AA:BB:CC:DD:EE:FF",
        "status": "active",
        "properties": {
          "encap": "vlan-100",
          "leaf": "leaf1",
          "interface": "eth1/1"
        }
      }
    ],
    "groups": [
      {
        "id": "cisco-apic-tenant-tn_Example",
        "type": "logical.tenant",
        "name": "tn_Example",
        "children": [
          "cisco-apic-vrf-tn_Example-vrf_Main",
          "cisco-apic-epg-tn_Example-epg_WEB"
        ]
      },
      {
        "id": "cisco-apic-vrf-tn_Example-vrf_Main",
        "type": "logical.vrf",
        "name": "vrf_Main"
      },
      {
        "id": "cisco-apic-epg-tn_Example-epg_WEB",
        "type": "osiris.cisco.epg",
        "name": "epg_WEB",
        "members": ["cisco-apic-ep-AA:BB:CC:DD:EE:FF"]
      }
    ]
  }
}

Modo por lotes - recopilación multidispositivo

Cree un archivo CSV de inventario:

dc,floor,room,zone,hostname,type,ip,port,owner,notes
AMS-01,F3,R301,POD-A,apic-01,apic,10.10.1.1,,self,Primary controller
AMS-01,F3,R301,POD-A,nx-spine-01,nxos,10.10.1.10,,self,Spine switch
AMS-01,F3,R302,POD-B,xe-router-01,iosxe,172.16.0.1,,isp,PE router

Ejecute el lote:

osirisjson-producer cisco apic -s inventory.csv -o ./output -u admin -p secret

El directorio de salida resultante:

output/
  AMS-01/
    F3/
      R301/
        POD-A/
          apic-01.json
          nx-spine-01.json
      R302/
        POD-B/
          xe-router-01.json
edit_note

Help improve this page

Found an issue or want to contribute? Open an issue.