Lab: Configure Multi-Tenant Project with Approval Policy and On-Demand Network
Objectives
- Create multi-tenant project with resource limits, naming conventions, and role assignments
- Configure approval policies with conditional triggers and escalation
- Set up on-demand NSX network profiles (routed and isolated)
- Deploy templates with on-demand network and verify full network lifecycle
- Configure lease management and resource reclamation to prevent sprawl
- Design multi-tenancy at scale strategy for VCDX defense
Prerequisites
VCF Automation deployed with cloud accounts connected (Lab 13 completed). Cloud template 'Lab Web Server' available.
Prior labs: vcp-admin-13
Required skills:
- VCF Automation UI navigation
- NSX networking (Tier-0/Tier-1 gateways, segments)
- Cloud template YAML syntax
- Multi-tenancy concepts
Lab Environment
Holodeck VCF pod with VCF Automation and NSX integration. Tier-0 gateway configured with uplink. Tier-1 gateway available for on-demand segment attachment.
Credentials
| System | Username | Password |
|---|---|---|
| VCF Automation | admin | |
| NSX Manager | admin |
Tasks
Task 1 Create Multi-Tenant Project with Resource Governance
securityProjects are the primary resource boundary and tenancy unit in VCF Automation. Configuring resource limits, naming conventions, cloud zone mappings, and role assignments demonstrates enterprise multi-tenancy design — a key Obj 4.4 topic.
Create project: VCF Automation → Administration → Projects → New Project. Name='dev-team-alpha'. Description='Development team Alpha - web application workloads'. Add members: assign test user with 'Member' role, assign admin with 'Administrator' role.
Configure resource limits: Project → Provisioning tab → Cloud Zones. Add 'Lab-Zone-01' with limits: Max Instances=10, Max CPU=40, Max Memory=80 GB, Max Storage=500 GB. Set priority=1 (if multiple zones, priority determines placement preference).
Configure custom naming: Project → Provisioning tab → Custom Naming. Template: '${project.name}-${resource.name}-${####}'. Example output: 'dev-team-alpha-web-vm-0001'. Test the naming template to verify format.Create a second project for comparison: Name='qa-team-beta'. Members: different test user as Member. Cloud Zone: same 'Lab-Zone-01' but with different limits (Max Instances=5, Max CPU=20). Naming: 'qa-beta-${resource.name}-${####}'.
Test project isolation: Login as dev-team-alpha member → verify only 'Lab Web Server' templates shared with this project are visible. Login as qa-team-beta member → verify nothing is visible (no content shared yet). This confirms project-level content isolation.
Validation Gate
Check: Two projects created with different resource limits, naming conventions, and member isolation verified
Expected: Projects visible with configured governance settings. Content isolation confirmed between projects.
Task 2 Configure Approval Policies with Conditional Triggers and Escalation
securityApproval policies enforce governance by requiring human review before provisioning. Conditional triggers allow granular control — small deployments auto-approve, large deployments require manager approval. This is critical for enterprise VCF deployment governance.
Create approval policy: Service Broker → Policies → Definitions → New Policy → Approval Policy. Name='Standard Deployment Approval'. Scope: Project='dev-team-alpha'. Decision policy: 'Any approver can approve'.
Configure conditional trigger: In the approval policy, add criteria:
Condition 1: 'When deployment request count > 2' (if requesting more than 2 VMs)
Condition 2: 'When flavor = large' (if requesting large VMs)
Approver: Select admin user. Timeout: Auto-deny after 72 hours if not actioned.
Create a second approval policy for higher-risk actions: Name='Production Change Approval'. Scope: apply when template has tag 'environment:prod'. Configure multi-level approval:
Level 1: Technical reviewer (project admin)
Level 2: Change manager (organization admin)
Both levels must approve. Timeout: 5 business days.
Test approval workflow: Login as dev-team-alpha member → Service Broker → Catalog → request 'Lab Web Server' with count=3 (triggers condition: count > 2). Verify: deployment shows 'Pending Approval'. Login as admin → Approvals → review request → Approve.
Test auto-deny: Login as member → request another deployment with count=3. Do NOT approve within 72 hours (or change timeout to 1 minute for lab testing). Verify: request auto-denied with reason 'Approval timeout exceeded'.
Validation Gate
Check: Approval policies with conditional triggers operational, multi-level approval tested, auto-deny verified
Expected: Deployment requests requiring approval pause correctly. Approval and auto-deny workflows functioning.
Task 3 Configure On-Demand NSX Network Profiles and Deploy
manageabilityOn-demand networks are created dynamically per deployment — demonstrating deep VCF Automation + NSX integration. This is a differentiating VCF capability (not available in VVF) and a high-value VCDX design topic.
Configure on-demand routed network: Infrastructure → Network Profiles → edit 'Lab-Network-Profile' (from Lab 13) → Networks tab → On-Demand Networks → Add. Configure:
Type: Routed
CIDR: 172.16.0.0/16
Subnet Size: /24
Tier-1 Gateway: Select existing Tier-1 (or 'Create new' for per-deployment isolation)
Transport Zone: Overlay transport zone
IP Range: DHCP (or static with Automation-managed IPAM)
Configure on-demand isolated network: In the same network profile → On-Demand Networks → Add another:
Type: Isolated
CIDR: 10.100.0.0/16
Subnet Size: /24
No Tier-1 gateway (isolated segments have no external routing)
DNS: Internal DNS server IP
Create multi-network template using both on-demand types:
formatVersion: 1
inputs:
size:
type: string
enum: [small, medium]
default: small
resources:
web-vm:
type: Cloud.vSphere.Machine
properties:
image: ubuntu-2204
flavor: '${input.size}'
networks:
- network: '${resource["web-net"].id}'
app-vm:
type: Cloud.vSphere.Machine
properties:
image: ubuntu-2204
flavor: '${input.size}'
networks:
- network: '${resource["web-net"].id}'
- network: '${resource["db-net"].id}'
web-net:
type: Cloud.NSX.Network
properties:
networkType: routed
constraints:
- tag: 'env:lab'
db-net:
type: Cloud.NSX.Network
properties:
networkType: private
constraints:
- tag: 'env:lab'
Deploy the multi-network template. Monitor in real-time:
1. VCF Automation: Deployments → watch resource creation steps 2. NSX Manager: Segments → observe new segments appearing dynamically 3. NSX Manager: Tier-1 Gateways → observe routed segment attachment
- vCenter: VMs created, NICs connected to correct segments
Verify network lifecycle: Delete the deployment. Monitor cleanup:
- VCF Automation: Deployment deleted
- vCenter: VMs removed
- NSX Manager: Both on-demand segments deleted automatically
- NSX Manager: Tier-1 gateway connection cleaned up
Verify: no orphaned segments remain in NSX Manager.
Validation Gate
Check: On-demand routed and isolated networks deployed via cloud template, then cleanly destroyed with no orphaned NSX resources
Expected: Full network lifecycle verified: dynamic creation → VM attachment → deletion → cleanup
Task 4 Configure Lease Management and Resource Reclamation
manageabilityLease management prevents resource sprawl by automatically expiring deployments. Combined with reclamation policies, it ensures unused infrastructure is recovered. This addresses the #1 concern with self-service: uncontrolled resource consumption.
Configure project lease policy: VCF Automation → Administration → Projects → 'dev-team-alpha' → Provisioning tab → Lease Policy. Set: Default lease=7 days, Maximum lease=30 days, Grace period=3 days (time after expiry before destruction).
Configure lease notifications: Service Broker → Policies → Lease Expiration. Create notification policy:
- Notify owner 3 days before expiry: 'Your deployment expires in 3 days. Renew or save your work.'
- Notify owner 1 day before expiry: 'Final warning: deployment expires tomorrow.'
- Notify project admin when deployment enters grace period
Test lease lifecycle: Deploy a catalog item with default 7-day lease. Check deployment details → Lease tab → verify expiry date. Test lease extension: Actions → Extend Lease → request 7 additional days. Verify total lease doesn't exceed maximum (30 days).
Configure resource reclamation: VCF Automation → Administration → Reclamation. Create reclamation policy:
- Identify idle VMs: CPU utilization < 5% for 14+ days
- Identify oversized VMs: CPU utilization consistently < 20% with 'large' flavor
- Action: Send notification to owner with recommendation to downsize or delete
- If no action after 7 days: escalate to project admin
Create a governance summary report: Review across all projects:
- Total active deployments per project
- Resource consumption vs limits (% utilized)
- Deployments approaching lease expiry (next 7 days)
- Idle/oversized VMs flagged for reclamation
- Approval requests pending
Document this as the 'Multi-Tenant Governance Dashboard' data source for VCF Operations (Lab 11-12 integration).
Validation Gate
Check: Lease policies configured with notifications, lease extension tested, reclamation policy active, governance summary reviewed
Expected: Full lifecycle governance operational: lease enforcement → notification → extension → reclamation
Task 5 Multi-Tenancy at Scale Design and VCDX Defense
manageabilityThis capstone task synthesizes all VCF Automation concepts (projects, templates, approval, networking, leases) into a cohesive multi-tenancy strategy suitable for VCDX defense. The focus shifts from technical configuration to architectural design rationale.
Document a multi-tenancy reference architecture for 10 development teams:
- Project Structure: 10 projects (one per team), shared cloud zones with per-project resource limits
- Template Strategy: Shared template library (org-level) + team-specific templates (project-level)
- Network Isolation: On-demand routed networks for externally-facing workloads, isolated for internal/PCI
- Approval Matrix: Dev environment = auto-approve, Staging = tech lead approval, Production = CAB approval
- Lease Policy: Dev = 7 days, Staging = 30 days, Production = no expiry (managed by change request)
- Cost Allocation: Per-project costing via VCF Operations custom groups + rate cards
Design NSX IP planning for on-demand networks at scale:
Assume: 10 teams, average 20 active deployments per team, each deployment needs 1 routed + 1 isolated subnet.
Calculation:
- Total subnets needed: 10 teams x 20 deployments x 2 networks = 400 subnets
- Each subnet is /24 (254 usable IPs)
- Routed pool: 172.16.0.0/12 (1,048,576 IPs = 4,096 /24 subnets) — sufficient
- Isolated pool: 10.0.0.0/8 (16,777,216 IPs = 65,536 /24 subnets) — sufficient
Document: CIDR allocation per team for troubleshooting (172.16.0.0/16 for team 1, 172.17.0.0/16 for team 2, etc.).
Design escalation matrix for approval bottlenecks:
1. If primary approver doesn't respond within 24 hours → notify backup approver 2. If backup approver doesn't respond within 24 hours → auto-escalate to org admin 3. If deployment is tagged 'emergency' → bypass normal approval, require post-deployment review
- Weekly report: approval response times, auto-denied requests, emergency bypasses
Document as an operational runbook for VCF Automation governance.
VCDX Defense Preparation — document responses:
- 'How do you design a multi-tenant VCF Automation environment for 10 development teams?'
Answer: Project-per-team model with shared cloud zones and per-project resource limits. Capability tags control placement. Naming conventions enable cost allocation. Content sharing controls template visibility. This balances isolation with infrastructure efficiency.
- 'What's the network isolation strategy with on-demand NSX segments?'
Answer: Routed for internet-facing tiers (web), isolated for internal/sensitive tiers (database). Per-team CIDR allocation prevents IP conflicts. Tier-1 gateway per deployment provides routing isolation. NSX DFW micro-segmentation adds application-level security within segments.
- 'How do you prevent IP exhaustion with on-demand networking?'
Answer: Pre-allocate CIDR blocks per team (/16 each from a /12 pool). Monitor subnet utilization via NSX Manager API. Alert at 80% pool utilization. Reclamation policies automatically clean up unused segments. Emergency procedure: expand pool or consolidate underutilized team allocations.
- 'What happens when an approver is unavailable for a week?'
Answer: Escalation matrix with backup approvers. 24-hour SLA per approval level. Emergency bypass for critical deployments with post-review. Weekly governance report tracks approval response times and identifies bottleneck approvers.
- 'How do you justify the complexity of VCF Automation to leadership?'
Answer: ROI model — compare manual provisioning (5 days average, 2 hours admin time per VM) vs self-service (15 minutes, zero admin time). At 100 VMs/month: manual = 200 admin hours, self-service = 10 hours (governance overhead). Annual savings = 2,280 admin hours. That's the productivity argument. The governance argument: automated compliance, audit trail, and cost transparency.
Validation Gate
Check: Multi-tenancy reference architecture documented, IP planning completed, escalation matrix designed, VCDX defense responses prepared
Expected: Comprehensive multi-tenancy design with operational governance and VCDX defense readiness
Final Validation
Multi-tenant projects configured with governance, approval policies with conditional triggers and escalation, on-demand NSX networking for routed and isolated topologies, lease management with reclamation, and VCDX-ready multi-tenancy reference architecture.
✓ Two projects with different resource limits and naming conventions → Project isolation verified — content and resource boundaries enforced
✓ Approval policies with conditional triggers → Small deployments auto-approve, large deployments pause for approval
✓ On-demand routed and isolated NSX segments created and cleaned up → Network lifecycle tied to deployment lifecycle — no orphans
✓ Lease policies with notifications and extension limits → Default 7-day lease, max 30 days, notifications at 3 and 1 day before expiry
✓ Reclamation policy detecting idle/oversized VMs → Idle VMs flagged with owner notification and escalation
✓ Multi-tenancy reference architecture for 10 teams documented → Project structure, network isolation, approval matrix, IP planning, escalation — all documented
Cleanup / Restore
• Delete test deployments
• Take snapshot 'post-multi-tenant-lab'
• Note: Leave projects and policies configured for future lab reference
Design Reflection (VCDX)
Panelist: How do you design a multi-tenant VCF Automation environment for 10 development teams? What's the network isolation strategy with on-demand NSX segments? How do you prevent approval bottlenecks while maintaining governance?
Requirements
- Multi-team self-service with resource isolation and content boundaries
- Automated network provisioning per deployment with routed and isolated options
- Cost control via lease management and resource reclamation
- Governance via approval policies with conditional triggers and escalation
- IP address management at scale for on-demand NSX segments
Constraints
- On-demand networking requires NSX integration (not available in VVF)
- Approval workflows add latency to provisioning — must balance governance with agility
- Resource limits may block legitimate large deployments — need exception process
- IP pool sizing limits maximum concurrent on-demand segments
- Lease enforcement may destroy active development environments
Assumptions
- Teams accept project-based tenancy model with per-team resource limits
- Lease policies acceptable to all teams (dev teams expect shorter leases, prod expects longer)
- NSX IP range large enough for on-demand segments at expected scale
- Backup approvers available for escalation within SLA
- Reclamation thresholds tuned per workload type (batch jobs have different patterns than web servers)
Risks
- IP exhaustion if on-demand segments not cleaned up — monitor pool utilization
- Approval bottleneck if primary approver unavailable — escalation matrix mitigates
- Naming collisions across projects — project name prefix prevents but relies on convention enforcement
- Lease expiry destroying active workloads — notifications and grace period mitigate
- Resource limit conflicts — one team needs more than allocated, requiring governance process to adjust
Self-Assessment Discussion Prompts
- How would you design approval workflows that don't create bottlenecks?
- What's the NSX IP planning strategy for on-demand networks at scale?
- How do you balance lease management enforcement with developer productivity?
- What's the operational model for managing 10+ projects with different governance requirements?
- How would you handle a team that consistently exceeds their resource limits?
References
- VCF Automation Multi-Tenancy GuideTier 1 — Official
- VCF Automation Approval PoliciesTier 1 — Official
- NSX On-Demand Networking with VCF AutomationTier 1 — Official
- VCF Automation Lease and ReclamationTier 2 — VMware Press