Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Cisco Aci

ASecurity

Expert coverage of Cisco ACI across all versions: APIC, OpFlex, policy model (tenant/VRF/BD/EPG/contract), spine-leaf fabric, L3Out, service graphs, Multi-Site NDO, and fabric troubleshooting. Use for \"Cisco ACI\", \"APIC\", \"OpFlex\", \"EPG\", \"contract\", \"bridge domain\", \"L3Out\", \"service graph\", \"Nexus Dashboard Orchestrator\", \"ACI fabric\". Do NOT use for cross-vendor comparison, platform selection, or category-wide architecture -- use the `dc-fabric` skill.

4 stars
0 votes
0 copies
1 views
Added 9/24/2026
devopspythongonodeawsazureterraformdebugginggitapifrontend

Works with

cliapi

Security Analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned 9/24/2026

$npx -y skills add chrishuffman5/domain-expert --skill cisco-aci --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cisco Aci?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Cisco Aci
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chrishuffman5-cisco-aci/badge)](https://www.skillsdirectory.com/skills/chrishuffman5-cisco-aci)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: cisco-aci
description: "Expert coverage of Cisco ACI across all versions: APIC, OpFlex, policy model (tenant/VRF/BD/EPG/contract), spine-leaf fabric, L3Out, service graphs, Multi-Site NDO, and fabric troubleshooting. Use for \"Cisco ACI\", \"APIC\", \"OpFlex\", \"EPG\", \"contract\", \"bridge domain\", \"L3Out\", \"service graph\", \"Nexus Dashboard Orchestrator\", \"ACI fabric\". Do NOT use for cross-vendor comparison, platform selection, or category-wide architecture -- use the `dc-fabric` skill."
license: MIT
---

# Cisco ACI

This skill covers Cisco Application Centric Infrastructure (ACI) across all supported versions. Areas of expertise include:

- APIC cluster management and fabric discovery
- OpFlex declarative southbound protocol
- ACI policy model: tenants, VRFs, bridge domains, EPGs, contracts, filters, L3Outs
- Spine-leaf CLOS fabric on Nexus 9000 in ACI mode
- Service graphs for L4-L7 service insertion (firewall, load balancer)
- Multi-Pod and Multi-Site with Nexus Dashboard Orchestrator (NDO)
- Cloud ACI for AWS and Azure
- Micro-segmentation with uSeg EPGs
- Fabric troubleshooting: health scores, faults, ELAM, contract hit counts
- REST API, moquery, Cobra SDK, Terraform ACI provider, Ansible

When a question is version-specific, consult the matching `references/versions/` file. When the version is unknown, provide general guidance and note where behavior differs.

## How to Approach Tasks

1. **Classify** the request:
   - **Troubleshooting** -- Load `references/diagnostics.md` for fault analysis, ELAM, contract debugging
   - **Policy design** -- Apply EPG/contract model guidance below
   - **Architecture** -- Load `references/architecture.md` for APIC, fabric topology, OpFlex, policy model
   - **Multi-site** -- Apply NDO/Multi-Pod/Multi-Site guidance below
   - **Automation** -- Apply REST API, moquery, Cobra SDK, or Terraform guidance

2. **Identify version** -- Determine which APIC version. If unclear, ask. Version matters for feature availability (ESGs require 6.0+, Cloud ACI requires 5.0+).

3. **Load context** -- Read the relevant reference file for deep knowledge.

4. **Analyze** -- Apply ACI-specific reasoning, not generic networking advice. ACI's policy model is fundamentally different from traditional networking.

5. **Recommend** -- Provide actionable guidance with GUI paths, REST API calls, or moquery examples.

6. **Verify** -- Suggest validation steps (health scores, contract hit counts, endpoint learning checks).

## Core Architecture

### APIC Cluster

The APIC is the centralized management, policy, and automation engine:
- **Deployment**: Minimum 3 physical or virtual APICs (odd number for quorum)
- **Production**: 3 physical APICs in separate availability zones; up to 9 for scale
- **Not in data path**: APIC distributes policies via OpFlex; fabric switches enforce locally
- **Resilience**: If all APICs go offline, existing policies continue to be enforced by switches
- **Functions**: Policy repository, REST API, GUI/CLI, fabric discovery, health monitoring, firmware management

### OpFlex Protocol

Declarative southbound protocol between APIC and fabric nodes:
- JSON-RPC over TCP
- Intent-based: APIC declares desired state; nodes implement locally
- Decentralized enforcement: each node processes its policy copy independently
- Nodes pull policies and report state back to APIC
- Also used by ACI Virtual Edge and Virtual Pod

### Spine-Leaf Fabric

Two-tier CLOS topology on Nexus 9000 series in ACI mode:
- **Leaf switches**: Connect servers, storage, service appliances, external networks. Policy enforcement points.
- **Spine switches**: Backbone interconnect. Carry VXLAN-encapsulated traffic. Run IS-IS underlay. No endpoint connections.
- Every leaf connects to every spine; no direct leaf-to-leaf or spine-to-spine links
- Fabric discovery is automated: switches register to APIC on boot via LLDP/IS-IS

**Supported platforms:**
- Nexus 9300-FX/EX/GX leaf series (1/10/25/100 GbE access)
- Nexus 9500 modular spine series (100/400 GbE backbone)
- Nexus 9336C-FX2 (dual-role: leaf or spine in smaller fabrics)

### ACI Mode vs NX-OS Standalone

Nexus 9000 runs in one of two mutually exclusive modes:
- **ACI mode**: Managed by APIC. No direct CLI configuration. Read-only diagnostics only.
- **NX-OS standalone mode**: Traditional CLI-driven. Full NX-OS feature set.
- Cannot mix modes within a single fabric. Switching modes requires a full wipe.

## Policy Model

### Hierarchy

```
Tenant
  VRF (L3 routing domain)
    Bridge Domain (L2 forwarding domain)
      Subnet(s)
      EPG (Endpoint Group)
        Endpoints (physical, virtual, container)
  Application Profile
    EPG
  Contract
    Subject
      Filter (L3/L4 match)
  L3Out (External Routed Network)
    External EPG
```

### Tenants

Top-level administrative container providing namespace isolation:
- **common**: Shared objects accessible by all tenants (shared L3Outs, contracts)
- **infra**: Fabric infrastructure (access policies, VLAN pools, domains)
- **mgmt**: Management network (in-band and out-of-band)
- Custom tenants for application/business isolation

### VRFs

Layer-3 routing domain within a tenant:
- Isolated routing table per VRF
- Multiple VRFs per tenant supported
- Inter-VRF communication requires shared contracts or L3Out route leaking
- VRF policy enforcement: ingress (recommended) or egress

### Bridge Domains

Layer-2 forwarding domain replacing traditional VLANs:
- Subnets defined on the BD (not on interfaces)
- One BD belongs to exactly one VRF
- BD settings control: ARP flooding, unicast routing, unknown unicast handling, L2/L3 forwarding modes
- Multiple subnets per BD supported (secondary IPs)
- **Hardware proxy mode** (recommended): Unknown unicast sent to spine proxy, not flooded

### EPGs (Endpoint Groups)

Core policy construct -- logical grouping of endpoints sharing the same security and forwarding policies:
- Endpoints classified by: static port binding, VLAN, VMM integration (vCenter, SCVMM), or container CNI
- EPGs belong to an Application Profile within a Tenant
- **Communication between EPGs is denied by default** -- whitelisting via contracts is required
- An EPG can span multiple leaf switches and even multiple sites (via NDO)

### Contracts

Define permitted communication between EPGs:
- **Filter**: L3/L4 match criteria (protocol, source/destination port)
- **Subject**: Groups filters; specifies directionality and QoS
- **Contract**: Groups subjects; applied between provider EPG and consumer EPG
- **Provider**: EPG offering a service
- **Consumer**: EPG accessing the service
- **vzAny**: Apply a contract to all EPGs in a VRF (simplifies shared services)
- **Preferred Group**: EPGs in a preferred group communicate freely without contracts; only non-preferred EPGs require explicit contracts

### L3Outs

Connect ACI fabric to external Layer-3 networks:
- Logical interface + external routing protocol (OSPF, BGP, EIGRP, static)
- External EPG (ExtEPG) classifies external subnets for policy
- Contracts between fabric EPGs and ExtEPGs control external access
- VRF-Lite for multi-VRF external connectivity
- BGP multi-hop support (APIC 6.1+)

### Service Graphs

Insert L4-L7 service appliances (firewalls, load balancers) in the traffic path between EPGs:
- **Function nodes**: Go-Through (transparent) or Go-To (routed)
- **Device clusters**: Physical or virtual appliance pools (ASA, F5, Palo Alto)
- **Managed mode**: APIC configures the appliance via device package
- **Unmanaged mode**: Appliance configured independently; ACI handles stitching only
- **PBR (Policy-Based Redirect)**: Steers traffic to service appliances at the leaf level

## Multi-Site Architecture

### Multi-Pod

- Single APIC cluster across geographically separated pods
- Inter-Pod Network (IPN) runs OSPF + PIM/BGP
- Single administrative domain with consistent policy
- Use case: adjacent buildings or campus-scale DC

### Multi-Site (NDO)

- Separate APIC clusters per site; centrally orchestrated by Nexus Dashboard Orchestrator
- Inter-site VXLAN overlay using BGP EVPN on Inter-Site Network (ISN)
- Stretched schemas push EPGs, BDs, VRFs, and contracts to multiple sites
- Independent failure domains per site
- Supports ACI on-premises, Cloud ACI (AWS/Azure), and NDFC sites

### Cloud ACI

- **AWS**: Cloud APIC as EC2 instance; VPCs mapped to ACI tenants; security groups managed via policy
- **Azure**: Cloud APIC as VM; VNets mapped to ACI tenants; NSGs managed via policy
- Cisco Catalyst 8000V cloud router for inter-site IPsec connectivity
- NDO provides unified policy across on-prem + cloud

## Automation

### REST API

```
Base URL: https://<apic>/api/

# Login
POST /api/aaaLogin.json
Body: {"aaaUser":{"attributes":{"name":"admin","pwd":"password"}}}

# Query all tenants
GET /api/node/class/fvTenant.json

# Query specific tenant
GET /api/node/mo/uni/tn-Production.json?rsp-subtree=full

# Create an EPG
POST /api/node/mo/uni/tn-Production/ap-WebApp/epg-FrontEnd.json
Body: {"fvAEPg":{"attributes":{"name":"FrontEnd"}}}
```

### moquery (CLI Object Query)

```
moquery -c fvTenant                              # List all tenants
moquery -c fvAEPg                                # List all EPGs
moquery -c fvCEp -f 'fv.CEp.ip=="10.1.1.5"'     # Find endpoint by IP
moquery -c vzFilter                              # List all filters
moquery -c faultInst -f 'fault.Inst.severity=="critical"'  # Critical faults
```

### Cobra SDK (Python)

```python
from cobra.mit.access import MoDirectory
from cobra.mit.session import LoginSession
from cobra.model.fv import Tenant, Ctx, BD, Ap, AEPg

ls = LoginSession('https://apic', 'admin', 'password')
md = MoDirectory(ls)
md.login()

# Query
tenants = md.lookupByClass('fvTenant')
for t in tenants:
    print(t.name)
```

### Terraform

```hcl
provider "aci" {
  username = "admin"
  password = var.apic_password
  url      = "https://apic.example.com"
}

resource "aci_tenant" "prod" {
  name = "Production"
}

resource "aci_vrf" "main" {
  tenant_dn = aci_tenant.prod.id
  name      = "Main-VRF"
}
```

## Common Pitfalls

1. **Forgetting that inter-EPG traffic is denied by default** -- New ACI operators expect connectivity after creating EPGs. Contracts must be explicitly configured between provider and consumer EPGs. Use `vzAny` for shared services like DNS/NTP.

2. **BD flooding mode vs hardware proxy** -- Hardware proxy (recommended) reduces broadcast but requires proper endpoint learning. Flooding mode works like a traditional VLAN but wastes fabric bandwidth. Default is hardware proxy in recent versions.

3. **L3Out route leaking without contracts** -- Even with correct routing, traffic between external networks and fabric EPGs requires contracts on the External EPG. Missing contracts result in silent drops.

4. **Service graph PBR misconfigurations** -- PBR requires correct consumer/provider bridge domain configuration, health check policies for the service appliance, and proper IP addressing on the service device. The most common issue is a misconfigured health check that marks the service device as down.

5. **Multi-Site schema conflicts** -- When stretching objects via NDO, local APIC modifications to stretched objects can cause schema drift. Always make changes for stretched objects through NDO, not directly on APIC.

6. **Endpoint learning issues** -- Rogue endpoint detection can mark legitimate endpoints as rogue during VM migrations. Tune rogue EP parameters for environments with frequent vMotion.

7. **VLAN pool exhaustion** -- ACI allocates VLANs from pools configured in access policies. If the pool range is too small, EPG deployment fails silently. Monitor VLAN pool utilization.

## Version-Specific Guidance

| Version | Reference | What's version-specific |
|---|---|---|
| 6.1 | `references/versions/6.1.md` | Endpoint Security Groups (ESGs), enhanced inter-VRF shared services, BGP multi-hop L3Out, streaming telemetry |

## Reference Files

Load these when you need deep knowledge:

- `references/architecture.md` -- APIC internals, OpFlex, policy model details, fabric discovery, access policies, VMM integration. Read for "how does X work" questions.
- `references/diagnostics.md` -- Faults, health scores, ELAM, contract hit counts, endpoint reachability, Central CLI. Read when troubleshooting.

Attribution

chrishuffman5chrishuffman5
View sourceSee grades on GitHubMore from chrishuffman5 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Terraform Module Library

Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.

401991 votes

sematext-otel

Wire a service's OpenTelemetry output to Sematext Cloud. Walks through region, App-type, instrumentation flow (managed OTLP endpoint vs Sematext Agent), and signal selection (traces/metrics/logs), then produces the exact env-var block and points at a runnable reference example in this repo. Invoke when instrumenting a new app for Sematext.

01 votes

Deployment Patterns

Deployment workflows, CI/CD pipeline patterns, Docker containerization, health checks, rollback strategies, and production readiness checklists for web applications. Use when setting up deployment infrastructure or planning releases.

2699140 votes

Babysit

Watch a pull request or review cycle until it is ready to merge. Use when asked to babysit, monitor, or keep checking PR comments, reviews, and CI until all actionable issues are resolved.

971540 votes

V7 Roster

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

953190 votes
View all in devops →