Lab 1: three-tier tenant
Build the first ACI Simulator lab: a lab-prod tenant with VRF, bridge domain, three EPGs, filters, and contracts.
This is the first real lab in the ACI Simulator track. The goal is not packet forwarding yet. The goal is to build a clean APIC policy model that you can inspect, delete, recreate, and later automate.
Target topology
What you will create
| Object | Name or value |
|---|---|
| Tenant | lab-prod |
| VRF | prod-vrf |
| Bridge domain | prod-bd |
| Subnet | 10.10.10.1/24 |
| Application profile | three-tier-app |
| EPGs | web, app, db |
| Filter | app-tcp-8080, TCP destination port 8080 |
| Filter | postgres, TCP destination port 5432 |
| Contract | web-to-app |
| Contract | app-to-db |
Policy relationships
| Consumer | Contract | Provider |
|---|---|---|
web | web-to-app | app |
app | app-to-db | db |
All three EPGs use bridge domain prod-bd. The bridge domain uses VRF prod-vrf.
Build it in the APIC GUI
Use the APIC UI first. The point of Lab 1 is to understand the object relationships before hiding them behind automation.
- Create tenant
lab-prod. - Inside the tenant, create VRF
prod-vrf. - Create bridge domain
prod-bd. - Associate
prod-bdwithprod-vrf. - Add subnet
10.10.10.1/24toprod-bd. - Create application profile
three-tier-app. - Create EPGs
web,app, anddb. - Associate each EPG with bridge domain
prod-bd. - Create filter
app-tcp-8080for TCP destination port8080. - Create filter
postgresfor TCP destination port5432. - Create contract
web-to-appusing filterapp-tcp-8080. - Create contract
app-to-dbusing filterpostgres. - Make
webconsumeweb-to-app. - Make
appprovideweb-to-app. - Make
appconsumeapp-to-db. - Make
dbprovideapp-to-db.
Verify it
In APIC, check:
- Tenant
lab-prodexists. - VRF
prod-vrfexists under the tenant. - Bridge domain
prod-bdpoints toprod-vrf. - Bridge domain
prod-bdhas subnet10.10.10.1/24. - Application profile
three-tier-appcontains EPGsweb,app, anddb. webconsumes contractweb-to-app.appprovidesweb-to-appand consumesapp-to-db.dbprovidesapp-to-db.- The tenant has no obvious APIC faults.
Reproduce it with automation
In the private lab automation repository, this lab is also represented by an idempotent APIC API script:
./scripts/configure-aci-first-lab.sh
The script reads APIC connection details from the local secret store, applies the tenant model, and verifies the expected objects through the APIC API. It should return ready: true when the lab is healthy.
Do not put APIC credentials, session cookies, or private secret files into the blog or into Git.
What this lab teaches
You should leave Lab 1 understanding:
- A tenant is the policy boundary.
- A VRF is the routing table.
- A bridge domain is the subnet and layer-2 boundary.
- An EPG is a policy group for similar endpoints.
- A contract is the allowed relationship between EPGs.
- A filter is the protocol and port match used by a contract.
This is the minimum ACI vocabulary you need before moving into access policies, static path bindings, L3Outs, and real endpoint traffic.