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

Produtor OSIRIS JSON para Cisco

O produtor Cisco do OSIRIS JSON conecta-se às plataformas de infraestrutura Cisco (APIC, NX-OS, IOS-XE) e gera snapshots OSIRIS JSON da topologia da sua rede, dispositivos, interfaces e conexões.

Instale o dispatcher principal e o produtor Cisco:

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

O dispatcher principal permite executar osirisjson-producer cisco .... Sem ele, invoque o binário do fornecedor diretamente como osirisjson-producer-cisco ....

Certifique-se de que $GOPATH/bin (ou $HOME/go/bin) esteja no seu PATH. Consulte a página primeiros passos para mais opções de instalação.

Plataformas compatíveis

ACI / APIC

disponível

Controlador de Infraestrutura por Política de Aplicação

Transporte: API REST

NX-OS

disponível

Switches de data center Nexus

Transporte: CLI NX-API

IOS-XE

disponível

Roteadores e switches corporativos

Transporte: NETCONF/YANG sobre SSH

Uso da CLI

O produtor Cisco usa uma CLI no estilo dispatcher com subprodutores:

osirisjson-producer cisco <subcommand> [flags]

Modo único

Conecte-se a um dispositivo e salve um documento OSIRIS JSON como cisco-<type>-<timestamp>-<hostname>.json:

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

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

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

Se -p / --password for omitido, a CLI solicitará interativamente.

Modo em lote

Colete dados de vários dispositivos listados em um arquivo CSV. A saída é organizada como uma estrutura hierárquica de diretórios: DC/Floor/Room/Zone/Hostname.json.

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

Gere um modelo CSV para começar:

osirisjson-producer cisco template --generate apic

O modelo CSV usa estas colunas:

ColunaObrigatóriaDescrição
dcNome do data center (usado para a hierarquia de pastas de saída)
floorIdentificador do andar
roomIdentificador da sala
zoneIdentificador da zona ou pod
hostnamesimRótulo do dispositivo usado como nome do arquivo de saída
typesimTipo de produtor: apic, nxos, iosxe
ipsimEndereço IP ou FQDN do dispositivo de destino
portSobrescreve a porta (padrão: específica do produtor)
ownerself (padrão), isp ou colo - apenas metadados do operador
notesNotas em texto livre (ignoradas pelo produtor)

As credenciais são fornecidas pelas flags -u/-p e se aplicam a todos os alvos do lote.

Referência de flags

Flags do modo único

FlagCurtaDescrição
--host-hHost de destino (IP ou FQDN, opcionalmente com :port)
--username-uNome de usuário para autenticação
--password-pSenha (omita para solicitação interativa)
--port-PSobrescreve a porta (padrão: específica do produtor)
--detailNível de detalhe: minimal (padrão) ou detailed
--insecureIgnora a verificação do certificado TLS
--safe-failure-modeTratamento de segredos: fail-closed (padrão), log-and-redact, off

Flags do modo em lote

FlagCurtaDescrição
--source-sArquivo CSV com os alvos
--output-oDiretório de saída (hierárquico: DC/Floor/Room/Zone/Hostname.json)
--username-uNome de usuário padrão para todos os alvos
--password-pSenha padrão para todos os alvos

Flags globais

FlagDescrição
--version / -vExibe a versão e sai
--helpExibe a ajuda e sai

O que cada plataforma coleta

ACI / APIC

O produtor APIC consulta as seguintes classes MO via API REST:

Modo minimal:

Classe MODescrição
fabricNodeNós da fabric (controladores, spines, leafs)
topSystemAtributos do sistema (uptime, estado, MAC da fabric, MTU do plano de controle)
firmwareRunningVersões de firmware em execução
fvTenantDefinições de tenant
fvCtxContextos VRF
fvBDBridge domains
fvSubnetSub-redes
fvAEPgGrupos de endpoints de aplicação
l3extOutConectividade externa L3
faultInstInstâncias de falha ativas

O modo detailed adiciona:

Classe MODescrição
fvCEpEndpoints de clientes (MAC, encapsulamento VLAN, associação ao leaf)

NX-OS

O produtor NX-OS envia comandos CLI NX-API em requisições em lote:

Modo minimal:

ComandoDescrição
show versionModelo do dispositivo, número de série, versão do SO, uptime
show inventoryInventário de hardware (módulos, fontes de alimentação, ventoinhas)
show interface briefNomes das interfaces, estados, velocidades, VLANs
show vlan briefIDs de VLAN, nomes e interfaces membro
show vrf all detailDefinições de VRF e interfaces membro
show lldp neighbors detailDescoberta de vizinhos LLDP
show vpc briefDomínio vPC, status do peer, keepalive
show port-channel summaryConfigurações de port-channel

O modo detailed adiciona:

ComandoDescrição
show interfaceEstatísticas completas da interface (MTU, largura de banda, duplex, contadores)
show system resources% de ociosidade da CPU, uso de memória, médias de carga
show environmentFontes de alimentação, status das ventoinhas, temperaturas

IOS-XE

O produtor IOS-XE usa RPCs NETCONF/YANG sobre SSH (porta padrão 830):

Modo minimal:

Modelo YANGDescrição
Cisco-IOS-XE-nativeVersão do dispositivo e hostname
ietf-interfacesDetalhes das interfaces
Cisco-IOS-XE-device-hardware-operInventário de hardware
Cisco-IOS-XE-cdp-operDescoberta de vizinhos CDP
Cisco-IOS-XE-native (vrf)Definições de VRF

O modo detailed adiciona:

Modelo YANGDescrição
Cisco-IOS-XE-bgp-operDetalhes dos vizinhos BGP
Cisco-IOS-XE-ospf-operProcesso OSPF e estado dos vizinhos
Cisco-IOS-XE-process-cpu-operUtilização de CPU
Cisco-IOS-XE-memory-operEstatísticas de memória

Estrutura de saída do OSIRIS JSON

Todos os três produtores emitem o mesmo envelope 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 recurso por plataforma

Os tipos de recurso seguem a especificação OSIRIS JSON v1.0. Tipos padrão são usados onde definidos; tipos específicos do fornecedor usam o namespace osiris.cisco.*.

IOS-XE:

  • network.router - Dispositivo principal (padrão)
  • network.interface - Interfaces físicas e lógicas (padrão)
  • osiris.cisco.interface.lag - Interfaces port-channel / LAG

NX-OS:

  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Dispositivo (classificado por função)
  • network.interface - Interfaces físicas e lógicas (padrão)
  • osiris.cisco.interface.lag - Port-channels

APIC:

  • osiris.cisco.controller - Controladores APIC
  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Switches da fabric
  • osiris.cisco.domain.bridge - Bridge domains
  • network.subnet - Sub-redes (padrão)
  • osiris.cisco.l3out - Redes externas L3
  • osiris.cisco.endpoint - Endpoints de clientes (somente no modo detailed)

Tipos de conexão

  • IOS-XE / NX-OS: physical.ethernet para links entre interfaces descobertos via CDP/LLDP
  • APIC: contains para contenção hierárquica de tenants, network para associações 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

Descoberta de conexões

  • IOS-XE descobre vizinhos via CDP (Cisco Discovery Protocol)
  • NX-OS descobre vizinhos via LLDP (Link Layer Discovery Protocol)
  • APIC usa hierarquia de contenção (tenants -> BDs -> sub-redes -> EPGs) em vez de links ponto a ponto

Dispositivos remotos descobertos via CDP/LLDP são adicionados como recursos stub com status: unknown.

Exemplos

IOS-XE - dispositivo único, modo minimal

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

Saída (resumida):

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

Saída (resumida):

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

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

Saída (resumida):

{
  "$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 em lote - coleta de múltiplos dispositivos

Crie um arquivo CSV de inventário:

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

Execute o lote:

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

O diretório de saída 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.