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

Producer OSIRIS JSON per Cisco

Il producer Cisco di OSIRIS JSON si connette alle piattaforme di infrastruttura Cisco (APIC, NX-OS, IOS-XE) e genera snapshot OSIRIS JSON della topologia della rete, dei dispositivi, delle interfacce e delle connessioni.

Installa il dispatcher core e il producer Cisco:

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

Il dispatcher core consente di eseguire osirisjson-producer cisco .... Senza di esso, richiama direttamente il binario del vendor come osirisjson-producer-cisco ....

Assicurati che $GOPATH/bin (o $HOME/go/bin) sia nel tuo PATH. Consulta la pagina getting started per ulteriori opzioni di installazione.

Piattaforme supportate

ACI / APIC

disponibile

Application Policy Infrastructure Controller

Trasporto: API REST

NX-OS

disponibile

Switch Nexus per data center

Trasporto: CLI NX-API

IOS-XE

disponibile

Router e switch enterprise

Trasporto: NETCONF/YANG su SSH

Utilizzo della CLI

Il producer Cisco utilizza una CLI in stile dispatcher con sottoproduttori:

osirisjson-producer cisco <subcommand> [flags]

Modalità singola

Connettiti a un dispositivo e salva un documento OSIRIS JSON come cisco-<type>-<timestamp>-<hostname>.json:

# Snapshot della fabric ACI tramite APIC
osirisjson-producer cisco apic -h 10.0.0.1 -u admin -p secret

# Snapshot del dispositivo NX-OS
osirisjson-producer cisco nxos -h switch01.example.com -u admin -p secret

# Snapshot del dispositivo IOS-XE
osirisjson-producer cisco iosxe -h router01.example.com -u admin --insecure

Se -p / --password viene omesso, la CLI richiede l’inserimento in modo interattivo.

Modalità batch

Raccogli dati da più dispositivi elencati in un file CSV. L’output è organizzato come struttura gerarchica di directory: DC/Floor/Room/Zone/Hostname.json.

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

Genera un modello CSV per iniziare:

osirisjson-producer cisco template --generate apic

Il modello CSV utilizza queste colonne:

ColonnaObbligatoriaDescrizione
dcNome del data center (usato per la gerarchia delle cartelle di output)
floorIdentificatore del piano
roomIdentificatore della stanza
zoneIdentificatore della zona o del pod
hostnameEtichetta del dispositivo usata come nome del file di output
typeTipo di producer: apic, nxos, iosxe
ipIndirizzo IP o FQDN del dispositivo di destinazione
portSostituisce la porta (predefinita: specifica del producer)
ownerself (predefinito), isp o colo - solo metadati dell’operatore
notesNote in testo libero (ignorate dal producer)

Le credenziali sono fornite tramite i flag -u/-p e si applicano a tutte le destinazioni del batch.

Riferimento dei flag

Flag della modalità singola

FlagBreveDescrizione
--host-hHost di destinazione (IP o FQDN, facoltativamente con :port)
--username-uNome utente per l’autenticazione
--password-pPassword (ometti per il prompt interattivo)
--port-PSostituisce la porta (predefinita: specifica del producer)
--detailLivello di dettaglio: minimal (predefinito) o detailed
--insecureSalta la verifica del certificato TLS
--safe-failure-modeGestione dei segreti: fail-closed (predefinito), log-and-redact, off

Flag della modalità batch

FlagBreveDescrizione
--source-sFile CSV con le destinazioni
--output-oDirectory di output (gerarchica: DC/Floor/Room/Zone/Hostname.json)
--username-uNome utente predefinito per tutte le destinazioni
--password-pPassword predefinita per tutte le destinazioni

Flag globali

FlagDescrizione
--version / -vMostra la versione ed esce
--helpMostra la guida ed esce

Cosa raccoglie ogni piattaforma

ACI / APIC

Il producer APIC interroga le seguenti classi MO tramite l’API REST:

Modalità minimal:

Classe MODescrizione
fabricNodeNodi fabric (controller, spine, leaf)
topSystemAttributi di sistema (uptime, stato, MAC fabric, MTU del control plane)
firmwareRunningVersioni del firmware in esecuzione
fvTenantDefinizioni dei tenant
fvCtxContesti VRF
fvBDBridge domain
fvSubnetSottoreti
fvAEPgGruppi di endpoint applicativi
l3extOutConnettività esterna L3
faultInstIstanze di fault attive

La modalità detailed aggiunge:

Classe MODescrizione
fvCEpEndpoint client (MAC, encapsulamento VLAN, associazione leaf)

NX-OS

Il producer NX-OS invia comandi CLI NX-API in richieste raggruppate:

Modalità minimal:

ComandoDescrizione
show versionModello del dispositivo, numero di serie, versione OS, uptime
show inventoryInventario hardware (moduli, alimentatori, ventole)
show interface briefNomi delle interfacce, stati, velocità, VLAN
show vlan briefID VLAN, nomi e interfacce membri
show vrf all detailDefinizioni VRF e interfacce membri
show lldp neighbors detailRilevamento dei vicini LLDP
show vpc briefDominio vPC, stato del peer, keepalive
show port-channel summaryConfigurazioni port-channel

La modalità detailed aggiunge:

ComandoDescrizione
show interfaceStatistiche complete delle interfacce (MTU, larghezza di banda, duplex, contatori)
show system resources% di inattività CPU, utilizzo memoria, load average
show environmentAlimentatori, stato delle ventole, temperature

IOS-XE

Il producer IOS-XE utilizza RPC NETCONF/YANG su SSH (porta predefinita 830):

Modalità minimal:

Modello YANGDescrizione
Cisco-IOS-XE-nativeVersione del dispositivo e hostname
ietf-interfacesDettagli delle interfacce
Cisco-IOS-XE-device-hardware-operInventario hardware
Cisco-IOS-XE-cdp-operRilevamento dei vicini CDP
Cisco-IOS-XE-native (vrf)Definizioni VRF

La modalità detailed aggiunge:

Modello YANGDescrizione
Cisco-IOS-XE-bgp-operDettagli dei vicini BGP
Cisco-IOS-XE-ospf-operProcesso OSPF e stato dei vicini
Cisco-IOS-XE-process-cpu-operUtilizzo CPU
Cisco-IOS-XE-memory-operStatistiche della memoria

Struttura dell’output OSIRIS JSON

Tutti e tre i producer emettono la stessa struttura 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": [ ... ]
  }
}

Tipi di risorse per piattaforma

I tipi di risorsa seguono la specifica OSIRIS JSON v1.0. I tipi standard sono utilizzati dove definiti; i tipi specifici del vendor usano il namespace osiris.cisco.*.

IOS-XE:

  • network.router - Dispositivo principale (standard)
  • network.interface - Interfacce fisiche e logiche (standard)
  • osiris.cisco.interface.lag - Interfacce port-channel / LAG

NX-OS:

  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Dispositivo (classificato per ruolo)
  • network.interface - Interfacce fisiche e logiche (standard)
  • osiris.cisco.interface.lag - Port-channel

APIC:

  • osiris.cisco.controller - Controller APIC
  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Switch fabric
  • osiris.cisco.domain.bridge - Bridge domain
  • network.subnet - Sottoreti (standard)
  • osiris.cisco.l3out - Reti esterne L3
  • osiris.cisco.endpoint - Endpoint client (solo modalità detailed)

Tipi di connessione

  • IOS-XE / NX-OS: physical.ethernet per collegamenti tra interfacce rilevati tramite CDP/LLDP
  • APIC: contains per il contenimento gerarchico dei tenant, network per le associazioni dei bridge domain

Tipi di gruppo per piattaforma

IOS-XE: logical.vrf

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

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

Rilevamento delle connessioni

  • IOS-XE rileva i vicini tramite CDP (Cisco Discovery Protocol)
  • NX-OS rileva i vicini tramite LLDP (Link Layer Discovery Protocol)
  • APIC utilizza una gerarchia di contenimento (tenant -> BD -> sottoreti -> EPG) invece di collegamenti punto-punto

I dispositivi remoti rilevati tramite CDP/LLDP vengono aggiunti come risorse stub con status: unknown.

Esempi

IOS-XE - dispositivo singolo, modalità minimal

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

Output (ridotto):

{
  "$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 singolo, modalità detailed

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

Output (ridotto):

{
  "$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 - snapshot della fabric ACI

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

Output (ridotto):

{
  "$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"]
      }
    ]
  }
}

Modalità batch - raccolta multi-dispositivo

Crea un file CSV di 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

Esegui il batch:

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

La directory di output risultante:

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.