Lab 8: cross-tenant shared services
Create a shared-services tenant and expose DNS/NTP-style contracts only to approved EPGs in production and development.
Lab 8 is the first controlled cross-tenant sharing lab.
Lab 7 kept production and development completely separate. Lab 8 adds a third tenant:
lab-shared
That tenant represents common services such as DNS and NTP.
Target model
What you configure
| Area | Value |
|---|---|
| Shared tenant | lab-shared |
| Shared VRF | shared-vrf |
| Shared bridge domain | shared-bd |
| Shared subnet | 10.30.10.1/24 |
| Shared app profile | shared-services-app |
| Provider EPG | dns-ntp-services |
| Provider contracts | shared-dns, shared-ntp |
The provider tenant owns the real contracts. The consuming tenants get local contract interfaces:
| Consumer tenant | Local interfaces |
|---|---|
lab-prod | shared-dns-if, shared-ntp-if |
lab-dev | shared-dns-if, shared-ntp-if |
Those interfaces point back to the contracts in lab-shared.
Approved consumers
The consumer list is explicit:
| Tenant | App profile | EPGs |
|---|---|---|
lab-prod | three-tier-app | web, app, db |
lab-dev | dev-three-tier-app | frontend, api, database |
There is no tenant-wide shortcut in this lab. Each approved EPG consumes the shared DNS and NTP interfaces directly.
Automation
The lab repo has an idempotent script:
./scripts/configure-aci-lab-8-cross-tenant-shared-services.sh
The latest run returned:
ready: true
shared_tenant lab-shared
provider_epg dns-ntp-services
approved_consumer_count 12
observed_consumer_count 12
unexpected_shared_interface_consumers []
fault_counts lab-prod=0 lab-dev=0 lab-shared=0
Verification checklist
In APIC, check these before calling the lab complete:
- Tenant
lab-sharedexists. lab-sharedhas VRFshared-vrf.lab-sharedhas bridge domainshared-bd.shared-bdhas subnet10.30.10.1/24.- Application profile
shared-services-appexists. - EPG
dns-ntp-servicesexists. - Contracts
shared-dnsandshared-ntpexist. lab-prodhas contract interfacesshared-dns-ifandshared-ntp-if.lab-devhas contract interfacesshared-dns-ifandshared-ntp-if.- Only the approved EPGs consume those interfaces.
lab-prod,lab-dev, andlab-sharedhave zero active faults.
Why this matters
Real ACI environments often need shared services. DNS, NTP, identity services, patch repositories, monitoring, and logging are common examples.
The design mistake is to make sharing broad just because the service is common.
This lab keeps the model narrow:
shared service provider tenant
named contracts
consumer-side contract interfaces
approved EPG consumers
zero broad tenant-wide access
What this lab teaches
You should leave Lab 8 understanding:
- ACI tenants can stay isolated while still consuming approved shared services.
- The provider tenant owns the service contracts.
- Consumer tenants can hold local contract interfaces that point to provider contracts.
- Shared services should be named, audited, and narrow.
- The simulator proves APIC policy relationships, not packet flow.
The next lab should compare this dedicated shared-services tenant pattern with reusable policy in the built-in common tenant.