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

Producteur OSIRIS JSON pour Cisco

Le producteur Cisco pour OSIRIS JSON se connecte aux plateformes d’infrastructure Cisco (APIC, NX-OS, IOS-XE) et génère des instantanés OSIRIS JSON de la topologie de votre réseau, des appareils, des interfaces et des connexions.

Installez le répartiteur principal et le producteur Cisco :

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

Le répartiteur principal vous permet d’exécuter osirisjson-producer cisco .... Sans lui, invoquez directement le binaire du fournisseur sous la forme osirisjson-producer-cisco ....

Assurez-vous que $GOPATH/bin (ou $HOME/go/bin) figure dans votre PATH. Consultez la page getting started pour plus d’options d’installation.

Plateformes prises en charge

ACI / APIC

disponible

Contrôleur d'infrastructure de politique applicative

Transport : API REST

NX-OS

disponible

Commutateurs de centre de données Nexus

Transport : CLI NX-API

IOS-XE

disponible

Routeurs et commutateurs d'entreprise

Transport : NETCONF/YANG sur SSH

Utilisation de la CLI

Le producteur Cisco utilise une CLI de type répartiteur avec des sous-producteurs :

osirisjson-producer cisco <subcommand> [flags]

Mode unique

Connectez-vous à un appareil et enregistrez un document OSIRIS JSON sous la forme cisco-<type>-<timestamp>-<hostname>.json :

# Instantané de fabric ACI via APIC
osirisjson-producer cisco apic -h 10.0.0.1 -u admin -p secret

# Instantané d'appareil NX-OS
osirisjson-producer cisco nxos -h switch01.example.com -u admin -p secret

# Instantané d'appareil IOS-XE
osirisjson-producer cisco iosxe -h router01.example.com -u admin --insecure

Si -p / --password est omis, la CLI demande le mot de passe de manière interactive.

Mode batch

Collectez des données à partir de plusieurs appareils répertoriés dans un fichier CSV. La sortie est organisée sous forme de structure de répertoires hiérarchique : DC/Floor/Room/Zone/Hostname.json.

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

Générez un modèle CSV pour commencer :

osirisjson-producer cisco template --generate apic

Le modèle CSV utilise les colonnes suivantes :

ColonneRequiseDescription
dcNom du centre de données (utilisé pour la hiérarchie des dossiers de sortie)
floorIdentifiant de l’étage
roomIdentifiant de la salle
zoneIdentifiant de la zone ou du pod
hostnameouiLibellé de l’appareil utilisé comme nom de fichier de sortie
typeouiType de producteur : apic, nxos, iosxe
ipouiAdresse IP ou FQDN de l’appareil cible
portRemplacer le port (par défaut : spécifique au producteur)
ownerself (par défaut), isp ou colo - métadonnées d’opérateur uniquement
notesNotes en texte libre (ignorées par le producteur)

Les identifiants sont fournis via les flags -u/-p et s’appliquent à toutes les cibles du batch.

Référence des flags

Flags du mode unique

FlagCourtDescription
--host-hHôte cible (IP ou FQDN, éventuellement avec :port)
--username-uNom d’utilisateur pour l’authentification
--password-pMot de passe (omettez-le pour une invite interactive)
--port-PRemplacer le port (par défaut : spécifique au producteur)
--detailNiveau de détail : minimal (par défaut) ou detailed
--insecureIgnorer la vérification du certificat TLS
--safe-failure-modeGestion des secrets : fail-closed (par défaut), log-and-redact, off

Flags du mode batch

FlagCourtDescription
--source-sFichier CSV contenant les cibles
--output-oRépertoire de sortie (hiérarchique : DC/Floor/Room/Zone/Hostname.json)
--username-uNom d’utilisateur par défaut pour toutes les cibles
--password-pMot de passe par défaut pour toutes les cibles

Flags globaux

FlagDescription
--version / -vAfficher la version et quitter
--helpAfficher l’aide et quitter

Ce que chaque plateforme collecte

ACI / APIC

Le producteur APIC interroge les classes MO suivantes via l’API REST :

Mode minimal :

Classe MODescription
fabricNodeNœuds de la fabric (contrôleurs, spines, leafs)
topSystemAttributs système (uptime, état, MAC de la fabric, MTU du plan de contrôle)
firmwareRunningVersions de firmware en cours d’exécution
fvTenantDéfinitions de tenant
fvCtxContextes VRF
fvBDDomaines bridge
fvSubnetSous-réseaux
fvAEPgGroupes d’endpoints applicatifs
l3extOutConnectivité externe L3
faultInstInstances de panne actives

Le mode détaillé ajoute :

Classe MODescription
fvCEpEndpoints clients (MAC, encapsulation VLAN, rattachement au leaf)

NX-OS

Le producteur NX-OS envoie des commandes CLI NX-API dans des requêtes groupées :

Mode minimal :

CommandeDescription
show versionModèle de l’appareil, numéro de série, version de l’OS, uptime
show inventoryInventaire matériel (modules, alimentations, ventilateurs)
show interface briefNoms des interfaces, états, vitesses, VLAN
show vlan briefID de VLAN, noms et interfaces membres
show vrf all detailDéfinitions VRF et interfaces membres
show lldp neighbors detailDécouverte des voisins LLDP
show vpc briefDomaine vPC, état du pair, keepalive
show port-channel summaryConfigurations de port-channel

Le mode détaillé ajoute :

CommandeDescription
show interfaceStatistiques complètes des interfaces (MTU, bande passante, duplex, compteurs)
show system resources% d’inactivité CPU, utilisation mémoire, moyennes de charge
show environmentAlimentations, état des ventilateurs, températures

IOS-XE

Le producteur IOS-XE utilise des RPC NETCONF/YANG sur SSH (port par défaut 830) :

Mode minimal :

Modèle YANGDescription
Cisco-IOS-XE-nativeVersion de l’appareil et hostname
ietf-interfacesDétails des interfaces
Cisco-IOS-XE-device-hardware-operInventaire matériel
Cisco-IOS-XE-cdp-operDécouverte des voisins CDP
Cisco-IOS-XE-native (vrf)Définitions VRF

Le mode détaillé ajoute :

Modèle YANGDescription
Cisco-IOS-XE-bgp-operDétails des voisins BGP
Cisco-IOS-XE-ospf-operProcessus OSPF et état des voisins
Cisco-IOS-XE-process-cpu-operUtilisation CPU
Cisco-IOS-XE-memory-operStatistiques mémoire

Structure de sortie OSIRIS JSON

Les trois producteurs émettent la même enveloppe 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": [ ... ]
  }
}

Types de ressources par plateforme

Les types de ressources suivent la spécification OSIRIS JSON v1.0. Les types standard sont utilisés lorsqu’ils sont définis ; les types spécifiques au fournisseur utilisent l’espace de noms osiris.cisco.*.

IOS-XE:

  • network.router - Appareil principal (standard)
  • network.interface - Interfaces physiques et logiques (standard)
  • osiris.cisco.interface.lag - Interfaces port-channel / LAG

NX-OS:

  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Appareil (classé par rôle)
  • network.interface - Interfaces physiques et logiques (standard)
  • osiris.cisco.interface.lag - Port-channels

APIC:

  • osiris.cisco.controller - Contrôleurs APIC
  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Commutateurs de fabric
  • osiris.cisco.domain.bridge - Domaines bridge
  • network.subnet - Sous-réseaux (standard)
  • osiris.cisco.l3out - Réseaux externes L3
  • osiris.cisco.endpoint - Endpoints clients (mode détaillé uniquement)

Types de connexions

  • IOS-XE / NX-OS: physical.ethernet pour les liens entre interfaces découverts via CDP/LLDP
  • APIC: contains pour la hiérarchie de contenance des tenants, network pour les associations de bridge domains

Types de groupes par plateforme

IOS-XE: logical.vrf

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

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

Découverte des connexions

  • IOS-XE découvre les voisins via CDP (Cisco Discovery Protocol)
  • NX-OS découvre les voisins via LLDP (Link Layer Discovery Protocol)
  • APIC utilise une hiérarchie de contenance (tenants -> BDs -> sous-réseaux -> EPGs) plutôt que des liens point à point

Les appareils distants découverts via CDP/LLDP sont ajoutés comme ressources stub avec status: unknown.

Exemples

IOS-XE - appareil unique, mode minimal

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

Sortie (tronquée) :

{
  "$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 - appareil unique, mode détaillé

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

Sortie (tronquée) :

{
  "$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 - instantané de fabric ACI

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

Sortie (tronquée) :

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

Mode batch - collecte multi-appareils

Créez un fichier CSV d’inventaire :

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

Exécutez le batch :

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

Le répertoire de sortie obtenu :

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.