
As i quickly realized in part 1 and 2, the yaml file was incomplete and needed some different approach when asked for an output.
One thing was the many different templates you can create:
1. VMware Infrastructure
- VMware vSphere: Direct support for deploying VMs and services on VMware’s core virtualization platform.
- VMware Cloud on AWS: Integration with VMware’s cloud offering on Amazon Web Services for seamless hybrid cloud operations.
- VMware NSX: Support for advanced network configurations and services using VMware’s network virtualization and security platform.
2. Public Cloud Platforms
- Amazon Web Services (AWS): Comprehensive support for deploying and managing AWS resources such as EC2 instances, S3 storage, and more.
- Microsoft Azure: Support for various Azure resources, including virtual machines, Azure SQL databases, and Azure Kubernetes Service.
- Google Cloud Platform (GCP): Allows for the deployment and management of Google Cloud resources like Compute Engine instances and Google Kubernetes Engine.
3. Container Platforms
- Kubernetes: Native support for deploying and managing Kubernetes clusters and containerized applications across any infrastructure, including integrations with Tanzu Kubernetes Grid and other Kubernetes distributions.
- OpenShift: Can integrate with Red Hat OpenShift for managing applications and services on this enterprise Kubernetes platform.
4. Private and Hybrid Clouds
- VMware Cloud Foundation: Support for deploying on VMware’s integrated private cloud platform that includes vSphere, vSAN, and NSX.
- VMware Cloud on Dell EMC: Allows businesses to manage and orchestrate environments running VMware’s cloud infrastructure on Dell EMC hardware.
5. Other Integrations
- VMware Cloud Director (formerly vCloud Director): Supports deployments in environments managed by VMware Cloud Director, which is targeted at service providers and large enterprises managing multiple cloud instances.
6. Traditional IT
- Bare Metal Servers: Capability to manage and provision bare metal servers directly, expanding automation beyond virtual and cloud resources.
7. Edge Environments
- VMware Edge Compute Stack: Supports the deployment and management of edge computing scenarios where processing is done at or near the source of data generation.
The list above shows that every blueprint has it`s prereq, and different config parameters, so you need to be very precise in your question for a template.
This means that i changed my approach a little and added more info to get a blueprint that i could use in my vsphere environment.
My first yaml created a cloud machine, but i needed a cloud vsphere machine, so that was one thing that needed to change. I also added info about the storage type and changed to win2022.
Me:
“Show me a aria automation cloud vsphere machine yaml file, for a windows 2022, with an existing c disk with 100gb. Storage type is cloud vsphere disk. disk number 2 is a DB disk with 300gb with letter E, disk number 3 is a log disk with 120gb with letter f and disk number 4 is a temp disk with 50gb with letter g.Disk provisioning type is thin. the vm uses NSX network called test2, and needs 2 cpu and 8gb ram”
ChatGPT:
Here’s a VMware Aria Automation Cloud template that matches your specifications for a Windows Server 2022 vSphere machine using vSAN storage with a thin provisioning type:
name: "Windows-Server-2022-VM-Detailed"description: "Provision a Windows Server 2022 VM with integrated cloud vSphere disk configuration."version: "1.0"resources: windowsVm: type: Cloud.vSphere.Machine properties: name: "Win2022Server" image: "Windows-2022" flavor: "custom" cpuCount: 2 totalMemoryMB: 8192 networks: - networkType: "existing" networkName: "test2" storage: type: "cloud.vsphere.disk" datastore: "vsanDatastore" disks: - name: "C Disk" type: "Cloud.vSphere.Disk" capacityGB: 100 provisioningType: "thin" bootDisk: true - name: "DB Disk" type: "Cloud.vSphere.Disk" capacityGB: 300 deviceName: "E:" provisioningType: "thin" - name: "Log Disk" type: "Cloud.vSphere.Disk" capacityGB: 120 deviceName: "F:" provisioningType: "thin" - name: "Temp Disk" type: "Cloud.vSphere.Disk" capacityGB: 50 deviceName: "G:" provisioningType: "thin" customizationSpec: customizationType: "windows" timezone: "UTC" adminUsername: "administrator" adminPassword: "SecurePassword123!" computerName: "Win2022Server" preScript: inline: | # PowerShell script to initialize and format additional disks Get-Disk | Where-Object PartitionStyle -eq 'RAW' | Initialize-Disk -PartitionStyle MBR -PassThru | ForEach-Object { $disk = $_ switch ($disk.Number) { 1 { New-Partition -DiskNumber $disk.Number -DriveLetter 'E' -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'DBDisk' -Confirm:$false } 2 { New-Partition -DiskNumber $disk.Number -DriveLetter 'F' -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'LogDisk' -Confirm:$false } 3 { New-Partition -DiskNumber $disk.Number -DriveLetter 'G' -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'TempDisk' -Confirm:$false } } }
Now we have a more complete file, but still we where missing some info. The blueprint has something called input parameters that is connected to the schema used when you request a vm from the Aria portal . Here you can setup variables like dropdown for different type of info, set disk size , name and so on, so its quite useful.
Next step would be to ask for input parameters.
Me:
“Show me a aria automation cloud vsphere machine yaml file, for a windows 2022, with an existing c disk with 100gb. Storage type is cloud vsphere disk. disk number 2 is a DB disk with 300gb with letter E, disk number 3 is a log disk with 120gb with letter f and disk number 4 is a temp disk with 50gb with letter g.Disk provisioning type is thin. the vm uses NSX network called test2, and needs 2 cpu and 8gb ram , with template input parameters”
ChatGPT:
Here’s a VMware Aria Automation Cloud template for a vSphere machine with template inputs as requested:
name: "Deploy-Windows-2022-VM"description: "Template to deploy a Windows Server 2022 VM with custom disk configuration and NSX networking."version: "1.0"inputs: vmName: type: string title: "Virtual Machine Name" description: "Name of the virtual machine to be deployed." default: "Win2022VM" cpuCount: type: integer title: "CPU Count" description: "Number of CPUs for the virtual machine." default: 2 memoryMB: type: integer title: "Memory in MB" description: "Amount of RAM in megabytes for the virtual machine." default: 8192 networkName: type: string title: "NSX Network Name" description: "Name of the NSX network the VM will connect to." default: "test2" adminUsername: type: string title: "Administrator Username" description: "Administrator username for the VM." default: "admin" adminPassword: type: string title: "Administrator Password" description: "Administrator password for the VM." encrypted: true dbDiskSizeGB: type: integer title: "DB Disk Size in GB" description: "Size of the database disk in gigabytes." default: 300 logDiskSizeGB: type: integer title: "Log Disk Size in GB" description: "Size of the log disk in gigabytes." default: 120 tempDiskSizeGB: type: integer title: "Temporary Disk Size in GB" description: "Size of the temporary disk in gigabytes." default: 50resources: windowsVm: type: Cloud.vSphere.Machine properties: name: "${input.vmName}" image: "Windows-2022" flavor: "custom" cpuCount: "${input.cpuCount}" totalMemoryMB: "${input.memoryMB}" networks: - networkType: "existing" networkName: "${input.networkName}" storage: type: "vsan" datastore: "vsanDatastore" disks: - name: "C Disk" type: "Cloud.vSphere.Disk" capacityGB: 100 provisioningType: "thin" bootDisk: true - name: "DB Disk" type: "Cloud.vSphere.Disk" capacityGB: "${input.dbDiskSizeGB}" deviceName: "E:" provisioningType: "thin" - name: "Log Disk" type: "Cloud.vSphere.Disk" capacityGB: "${input.logDiskSizeGB}" deviceName: "F:" provisioningType: "thin" - name: "Temp Disk" type: "Cloud.vSphere.Disk" capacityGB: "${input.tempDiskSizeGB}" deviceName: "G:" provisioningType: "thin" customizationSpec: customizationType: "windows" timezone: "UTC" adminUsername: "${input.adminUsername}" adminPassword: "${input.adminPassword}" computerName: "${input.vmName}" preScript: inline: | # PowerShell script to initialize and format additional disks Get-Disk | Where-Object PartitionStyle -eq 'RAW' | Initialize-Disk -PartitionStyle MBR -PassThru | ForEach-Object { $disk = $_ switch ($disk.Number) { 1 { New-Partition -DiskNumber $disk.Number -DriveLetter 'E' -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'DBDisk' -Confirm:$false } 2 { New-Partition -DiskNumber $disk.Number -DriveLetter 'F' -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'LogDisk' -Confirm:$false } 3 { New-Partition -DiskNumber $disk.Number -DriveLetter 'G' -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'TempDisk' -Confirm:$false } } }
As you can see, the yaml file is starting to look a bit more complex, but also more complete. From the looks of it, i see that it still needs some adjusting. One thing is actually the disks itself, so to do a quick comparison, i created a new template manually in Aria, a cloud vsphere machine vm with 3 disks and nsx network connected.
After a quick comparison of the yaml files i then merged the files , the manual template and the latest chatGPT template, and this gave me the most functioning blueprint in the test. There are some duplicate parameters, so it needs some adjusting, but i will test it along with some input parameters for the schema, so hopefully in the next post i will have a 100% functioning blueprint.

Leave a comment