top of page

VM Network Placement using VCF Automation Network Profiles

  • Writer: Brock Peterson
    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:

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


    bottom of page