Academy/VCP-VCF 9.0 Administrator (2V0-17.25)/Lab: Configure Multi-Tenant Project with Approval Policy and On-Demand Network
This lab targets VCF 9.0

Lab: Configure Multi-Tenant Project with Approval Policy and On-Demand Network

VCF 9.0Advancedadminautomationnetwork⏱ 120 min

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

SystemUsernamePassword
VCF Automationadmin
NSX Manageradmin

Tasks

Task 1 Create Multi-Tenant Project with Resource Governance

security

Projects 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.

Step 1
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.
Project created with two members in different roles.
Project roles: Administrator = full control (templates, deployments, policies). Member = deploy from catalog, manage own deployments. Viewer = read-only. Supervisor = approve requests. Role granularity is critical for governance.
Assigning all users as Administrator — violates least-privilege principle
Not adding a Supervisor role — approval policies won't have an approver
Step 2
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).
Cloud zone added to project with resource limits enforced.
Resource limits prevent any single project from consuming all infrastructure. Without limits, one team's runaway automation can starve others. In VCDX defense, explain how limits map to business unit budgets.
Setting limits too low — legitimate deployments get blocked, creating frustration
Not setting any limits — defeats the purpose of multi-tenancy governance
Step 3
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.
Custom naming template configured. Preview shows expected VM name format.
Naming conventions enable: (a) quick identification of VM ownership, (b) cost allocation via name-based grouping, (c) audit trail for compliance. Use project name prefix to identify tenant.
Naming templates that exceed 15-character Windows hostname limit — truncation causes unpredictable names
Not including a numeric suffix — name collisions when deploying multiple instances
Step 4

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}-${####}'.

Second project created with different limits and naming convention.
Two projects sharing the same cloud zone demonstrates multi-tenancy: both deploy to the same infrastructure, but with independent governance, limits, and naming. This is exactly how enterprise VCF environments work.
Step 5
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.
Each project member sees only content shared with their project.
Content isolation is automatic — no additional configuration needed beyond content sharing (Lab 13 Task 5). This is the second layer of multi-tenancy after resource limits.

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

security

Approval 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.

Step 1
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'.
Approval policy shell created, scoped to dev-team-alpha project.
Approval policies can be scoped to: organization (all projects), specific project, or specific catalog item. Project-level scope is most common in multi-tenant environments.
Step 2

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.

Approval policy with two conditional triggers configured.
Conditional triggers avoid approval fatigue. Small dev deployments (1-2 small VMs) auto-approve; large production deployments require review. This balances agility with governance.
Setting conditions too broadly — everything requires approval, defeating self-service
No timeout configured — pending approvals block resources indefinitely
Only one approver with no backup — approval bottleneck when approver is unavailable
Step 3

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.

Multi-level approval policy created for production deployments.
Multi-level approval maps to enterprise change management (ITIL). Level 1 = technical feasibility, Level 2 = business/risk approval. In VCF, this aligns with CAB (Change Advisory Board) processes.
Circular approval chains — user is both requester and approver
No escalation path — stuck approvals with no resolution mechanism
Step 4
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.
Request paused at 'Pending Approval'. After admin approval, deployment proceeds.
The approval workflow creates an audit trail: who requested, who approved, when, and any comments. This audit trail is essential for compliance reporting.
Step 5
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'.
Request auto-denied after timeout period.
Auto-deny prevents resource reservation leaks. Without timeout, pending approvals can hold resource allocations indefinitely, blocking other deployments.
Setting timeout too short — legitimate approvals denied before approver can review
Not notifying approvers about pending requests — approval sits unnoticed

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

manageability

On-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.

Step 1
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)

On-demand routed network configuration added to network profile.
Routed on-demand networks get a Tier-1 gateway connection, providing north-south connectivity (internet-facing or inter-segment routing). Each deployment gets its own /24 subnet from the CIDR pool.
CIDR pool too small — exhausted quickly with many deployments. Use /16 minimum for production
Selecting wrong transport zone — must match NSX overlay transport zone configured during VCF deployment
Not connecting Tier-1 to Tier-0 — on-demand segments are created but have no upstream connectivity
Step 2
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

On-demand isolated network configuration added.
Isolated networks have no north-south connectivity — VMs can communicate within the segment only. Use for: database tiers that should not be internet-accessible, internal application communication, PCI-DSS isolated workloads.
Confusing isolated with routed — isolated means NO routing, not 'private with NAT'
Not providing DNS for isolated networks — VMs can't resolve hostnames
Step 3

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'
Multi-tier template with routed (web) and isolated (DB) networks created.
This template demonstrates the classic 3-tier pattern: web tier on routed network (internet-accessible), app tier dual-homed (bridges web and DB), DB tier on isolated network (internal only). The app-vm has two NICs — one on each network.
Using 'isolated' instead of 'private' in YAML — VCF Automation uses 'private' for isolated networks in template syntax
Not dual-homing the app tier — web and DB can't communicate without a bridging VM or NSX DFW rules
Step 4

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
  1. vCenter: VMs created, NICs connected to correct segments
Two VMs deployed. Two NSX segments created dynamically. Web segment attached to Tier-1 gateway. DB segment isolated. App VM dual-homed.
This cross-platform observation (Automation → NSX → vCenter) is powerful for understanding the full orchestration chain. Each platform shows a different perspective of the same deployment.
Step 5

Verify network lifecycle: Delete the deployment. Monitor cleanup:

  1. VCF Automation: Deployment deleted
  2. vCenter: VMs removed
  3. NSX Manager: Both on-demand segments deleted automatically
  4. NSX Manager: Tier-1 gateway connection cleaned up

Verify: no orphaned segments remain in NSX Manager.

Complete cleanup. No orphaned NSX segments or Tier-1 gateway connections.
Automatic network lifecycle management is a key value proposition: NSX segments are created per-deployment and destroyed on deletion. No manual network cleanup needed. Compare this to traditional networking where VLAN provisioning is a multi-day ticket.
Orphaned segments if Automation-NSX integration breaks during deletion — check NSX cloud account connectivity
Deletion blocked if VMs have active connections or DFW rules referencing the segment

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

manageability

Lease 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.

Step 1
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).
Lease policy configured for project.
Lease hierarchy: project default < user request < maximum. Users can request up to 30 days, but default is 7 days. Grace period gives users time to renew before automatic destruction.
No grace period — deployments destroyed immediately on expiry, users lose work
Maximum lease too long (365 days) — defeats the purpose of lease management
No lease notification — users surprised by deployment destruction
Step 2
Configure lease notifications: Service Broker → Policies → Lease Expiration. Create notification policy:
  1. Notify owner 3 days before expiry: 'Your deployment expires in 3 days. Renew or save your work.'
  2. Notify owner 1 day before expiry: 'Final warning: deployment expires tomorrow.'
  3. Notify project admin when deployment enters grace period
Lease notification policy with three notification triggers.
Notifications are the user-friendly side of lease management. Without notifications, lease enforcement feels punitive. With notifications, it feels like a managed lifecycle.
Step 3
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).
Deployment created with 7-day lease. Lease extended to 14 days. Extension beyond 30 days blocked.
Lease extension requests can be configured to require approval — useful for production deployments where extensions should be justified.
Step 4
Configure resource reclamation: VCF Automation → Administration → Reclamation. Create reclamation policy:
  1. Identify idle VMs: CPU utilization < 5% for 14+ days
  2. Identify oversized VMs: CPU utilization consistently < 20% with 'large' flavor
  3. Action: Send notification to owner with recommendation to downsize or delete
  4. If no action after 7 days: escalate to project admin
Reclamation policy configured with idle/oversized detection and escalation.
Reclamation addresses the gap between lease management (time-based) and actual usage. A VM with a valid lease but zero utilization is wasting resources. Reclamation identifies these waste patterns.
Aggressive reclamation thresholds — flagging VMs that are legitimately idle (batch jobs, standby servers)
Auto-destroying idle VMs without notification — users lose important development environments
Step 5

Create a governance summary report: Review across all projects:

  1. Total active deployments per project
  2. Resource consumption vs limits (% utilized)
  3. Deployments approaching lease expiry (next 7 days)
  4. Idle/oversized VMs flagged for reclamation
  5. Approval requests pending

Document this as the 'Multi-Tenant Governance Dashboard' data source for VCF Operations (Lab 11-12 integration).

Governance summary showing cross-project resource utilization, lease status, and reclamation candidates.
This summary view is what IT leadership wants: visibility into self-service consumption patterns, compliance with governance policies, and actionable waste reduction recommendations.

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

manageability

This 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.

Step 1

Document a multi-tenancy reference architecture for 10 development teams:

  1. Project Structure: 10 projects (one per team), shared cloud zones with per-project resource limits
  2. Template Strategy: Shared template library (org-level) + team-specific templates (project-level)
  3. Network Isolation: On-demand routed networks for externally-facing workloads, isolated for internal/PCI
  4. Approval Matrix: Dev environment = auto-approve, Staging = tech lead approval, Production = CAB approval
  5. Lease Policy: Dev = 7 days, Staging = 30 days, Production = no expiry (managed by change request)
  6. Cost Allocation: Per-project costing via VCF Operations custom groups + rate cards
Multi-tenancy reference architecture documented with 6 design pillars.
This reference architecture is your VCDX design document for VCF Automation. Each pillar has a clear design decision with rationale.
Step 2

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.).

IP planning document with per-team CIDR allocation.
IP exhaustion is the #1 operational risk with on-demand networking at scale. Pre-planning CIDR allocation prevents mid-production IP pool exhaustion. Include buffer for growth.
Step 3

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
  1. Weekly report: approval response times, auto-denied requests, emergency bypasses

Document as an operational runbook for VCF Automation governance.

Escalation matrix documented with SLAs per approval level.
Approval bottlenecks are the most common complaint about governance. Having a documented escalation path with SLAs prevents self-service from degrading into a ticket system.
Step 4

VCDX Defense Preparation — document responses:

  1. '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.

  1. '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.

  1. '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.

  1. '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.

  1. '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.

Five VCDX defense responses documented with quantified business justification.
VCDX panelists test architectural depth AND business justification. Having both technical design rationale and quantified ROI makes your defense bulletproof.

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

  1. How would you design approval workflows that don't create bottlenecks?
  2. What's the NSX IP planning strategy for on-demand networks at scale?
  3. How do you balance lease management enforcement with developer productivity?
  4. What's the operational model for managing 10+ projects with different governance requirements?
  5. How would you handle a team that consistently exceeds their resource limits?

References

Was this page useful?
Type to search. ↑ ↓ to move, Enter to open, Esc to close.