VM Network Placement using VCF Automation Network Profiles
- Brock Peterson

- May 24
- 2 min read
I've been adding to an existing VCF Automation Blueprint, prompting the user for VM network placement, as opposed to a specific IP. In my environment, I have three networks to choose from, they look like this. Screenshots here are taken from VCF Automation 8.18.1.

You'll notice I'm not using Network Profile Capability Tags, as I wanted more granularity, so I'm using Network Tags as shown here.

I've given each Network a tag with its name. This allows me to prompt the user for the Network they'd like, I then use that tag to place the VM on it.
I've also assigned an IP Block in each network to be used for VM deployments, they look like this.
So, any VM that is deployed into the VM Network should take an IP from this block: 192.168.135.190 - 192.168.135.199 and any VM deployed into the vcf-ops Network should take an IP from this block: 192.168.135.170 - 192.168.135.179.
My Assembler Blueprint look like this, I've highlighted the networking related blocks in yellow.
formatVersion: 1
inputs:
vm_display_name:
type: string
description: VM Display Name
title: VM Display Name
vm_dns_name:
type: string
description: VM DNS Name
title: VM DNS Name
vcpuCount:
type: integer
description: Number of vCPUs
title: vCPU being requested
default: 2
minimum: 2
maximum: 32
totalMemoryMB:
type: integer
description: Memory in MB
title: Memory being requested (MB)
default: 4096
minimum: 4096
maximum: 32768
enum:
- 4096
- 8192
- 12288
- 16384
- 20480
- 24576
- 28672
- 32768
os:
type: string
description: OS
title: OS for VM
default: Windows 2022
enum:
- CentOS Linux 7
- CentOS Linux 8
- Debian Linux 12
- Oracle Linux 9
- RHEL 7
- Rocky Linux 9
- Windows 2022
- Windows 2025
network:
type: string
description: Network
title: Network
default: VM Network
enum:
- VM Network
- vcf-ops-ds1-DVUplinks-30
- vcf-ops
owner:
type: string
description: Owner of VM (please use email address)
title: Owner of VM (please use email address)
description:
type: string
description: Description of this VM
title: Description of this VM
category:
type: string
description: Category of VM
title: Category of VM
default: TEST
enum:
- TEST
- DEVELOPMENT
- PRODUCTION
notes:
type: string
description: VM Notes
title: VM Notes
vm_snapshot:
type: string
description: Snapshot after deployment?
title: Snapshot after deployment?
enum:
- 'YES'
- 'NO'
resources:
Cloud_Network_1:
type: Cloud.Network
properties:
name: QSNetwork
networkType: existing
constraints:
- tag: ${input.network}
Cloud_vSphere_Machine_1:
type: Cloud.vSphere.Machine
properties:
image: ${input.os}
cpuCount: ${input.vcpuCount}
totalMemoryMB: ${input.totalMemoryMB}
name: ${input.vm_display_name}
hostname: ${input.vm_dns_name}
vm_snapshot: ${input.vm_snapshot}
notes: ${input.notes}
owner: ${input.owner}
description: ${input.description}
category: ${input.category}
vcpu: ${input.vcpuCount}
memoryMB: ${input.totalMemoryMB}
networks:
- network: ${resource.Cloud_Network_1.id}
assignment: static
If you want this Blueprint you can get it here. I then wrapped this Blueprint with a Custom Form for appearance, it looks like this.

If you want this Custom Form you can get it here. Back in Service Broker Catalog the request now looks like this.

As expected we have three networks available from the dropdown. When I select the network a VM is deployed onto that network with an IP from the Block I assigned in the Network Profile. I deployed two VMs using this method and both deployed as expected. Hope this was helpful!







Comments