Robert Jensen

Cloud Agnostic Blueprints in VMware CAS

Multi-cloud automation concept illustration

VMware Cloud Automation Services went GA 2 days ago, on the 15/1/2019.
There is already a ton of blogs, describing the solution.

I thought that I would give my view on one of the things, that i find most cool about the solution.
Note that i’m no expert, but I already love the solution, and i’m looking forward to learning more  about what I, and the customers I talk to, can do with it.

Having spend the last 3-4 years talking about vRealize Automation, I like a lot of the features available today, but i’m also missing some (when i compare the 2). But that’s the beauty of a SAAS product. Just from the time i have spend on it, it has constantly been evolving, and adding new features. All without me having to do anything. You kinda get used to that :-)

So the feature I want to talk about today, is the Cloud Agnostic blueprints.

The idea is that a blueprint, can be used on multiple clouds, just by selecting different tags/constraints. And it actually works really well.

I will spend my time in Cloud Assembly today. So all you see, is taken from there.

Cloud Assembly support the following Clouds today.

Cloud Assembly showing supported cloud providers AWS, Azure, GCP and vSphere

I have connected to AWS, Azure, GCP and vSphere, along with NSX-v

For each account, I have created one or more Cloud Zones, containing the different zones, in a region.

Cloud Assembly Cloud Zones configured for each account region

The way I have tagged all my locations, is in the compute zones, that is available in each zone.
All my tags are in the form “region:city”

So my tags are :
- region:copenhagen - For local vSphere environment in Copenhagen
- region:frankfurt - For AWS in Frankfurt
- region:stockholm - For the new AWS in Stockholm
- region:ireland - For Azure in Ireland
- region:netherlands - for GCP in Nederlands

Region tags in region:city format applied to compute zones

The image I use in this post, is Ubuntu, and I have also mapped this, to an image in each zone.

Ubuntu image mapped to an image in each cloud zone

The same is done with the size. Here it’s small

Small flavor mapping configured for each cloud zone

After this, we are ready to build our blueprint.

The blueprint I will use, consists of the following YAML code.

You can copy/paste it, and reuse it in your own environment, with your own tags, and mappings. 

_inputs: _

_  region:_

_    type: string_

_    description: Region_

_    title: Region Tag Name_

_    enum:_

_      - ‘region:copenhagen’_

_      - ‘region:frankfurt’_

_      - ‘region:stockholm’_

_      - ‘region:ireland’_

_      - ‘region:netherlands’_

_    default: ‘region:copenhagen’_

resources:

_  Cloud_Machine_1:_

_    type: Cloud.Machine_

_    properties:_

_      image: ‘ubuntu’_

_      flavor: ‘small’_

_      constraints:_

_        - tag: ‘${input.region}’_

I have created the regions as dropdown menu’s, with a default to region:copenhagen and hardcoded the image and the size, just for this post.

Cloud Assembly blueprint canvas with region dropdown input

The deploy dialog now looks like this

Deployment dialog with region tag selection

Deployment dialog showing the region dropdown expanded

Now to test it, all there is left, is to deploy one in each location.

Same blueprint deployed across two AWS, Azure, GCP and vSphere

And there you have it. The same blueprint, deployed in 2 x AWS, 1 x Azure, 1 x GCP and 1 x vSphere, just by selecting different tags/constraints.

Hope you enjoyed this little demonstration, on how easy we can consume so many different cloud providers, in a single blueprint.

comments

💬 Comments are available