VMware Cloud Community
ysiri01
Contributor
Contributor

Customizing vRealize Automation with Microsoft.Net?

Hello,

We have situation where we have to add custom function into vRealize Automation 6.x as follows:

1) Creating Custom Reports of provisioning requests, can we use Microsoft.Net programming language to create such reports and integrate via vRA API (we do not have much skill on Java programming)?

2) Creating Custom Endpoint for IBM Intel Based Servers, how do we develop an endpoint for IBM Servers (provisioning virtual on IBM barebone servers)?   What kind of programming language or framework are required?    Micrososft.Net programming would do?

Any light shed on this is much appreciated.

Jeff Siri

Reply
0 Kudos
3 Replies
SeanKohler
Expert
Expert

1) Creating Custom Reports of provisioning requests, can we use Microsoft.Net programming language to create such reports and integrate via vRA API (we do not have much skill on Java programming)?

So...

The front end of vRA is REST extensible.  It supports both JSON and XML requests.  The entire XML namespace is defined within a .xsd file which can be pulled from the appliance or looked in the vMWare documents.  This means you could write your own web services and reporting on a windows server (or pull data for use by reporting services would be my preference) and consume data from the vRA namespace.  You can also leverage the REST calls to do provisioning and anything else that is 'POST' capable.

To do this, you need to get your head wrapped around vRA and how it works, but after that you can certainly use .NET and Windows to do everything out of the front end.

2) Creating Custom Endpoint for IBM Intel Based Servers, how do we develop an endpoint for IBM Servers (provisioning virtual on IBM barebone servers)?   What kind of programming language or framework are required?

With this, you are taking about downstream from vRA.  Quite simply, you are going to have a lot better time doing this work out of vRO and using vRA.  I am not a really smart IBM guy, but what hypervisor are you using?  (PowerVM, LPARs, MS HyperV, vSphere)  Or are you just talking about physical provisioning?

in vRO, you need Java Script ability.  It is a learning curve for a Windows guy, but it isn't too bad.  You do not need Java coding ability.

You would use vRA to call out vRO workflows to do the work you need in the IBM physical space more than likely.  I do not think there is any capability against IBM endpoints built into the vRA product.  (could be wrong... I am just not doing it)  But I am certain I could get it to work out of vRO which can then be leveraged with vRA Advanced Service Designer.

vRealize Automation 6.2 Documentation Center

ysiri01
Contributor
Contributor

Thank you for your response (very helpful).

For item 2) I am just talking about physical provision (OS) onto IBM Servers...Also, in vRO, do I need to write a custom Plug-in or just JavaScript?   Do you have any sample custom endpoint code?

Reply
0 Kudos
SeanKohler
Expert
Expert

Full disclosure... I am not currently deploying physical servers with the product... but I can lay down the general framework that you are looking at if you leverage vRealize to do what you are looking to do as of now. (things change... but I doubt IBM is going to write plugins for vRA/vRO with the amount of money they have been spending on their cloud products)  First, are you currently using or considering using vRA to deploy virtual machines? (vSphere, vCloud Air, HyperV, etc)  If not, I will be completely honest:  you might want to consider another approach.

Provided you really want to go down this road...

You wouldn't need to design and build a plugin to do what you need to do, but a purpose built plugin may have better long term support-ability, as if you rely on the some of the plugins in vRO today... you would be stuck if VMware changed tracks.  (e.g. if they decided to drop the Dynamic Types plugin... which would make me explode because that would be craziness!)

So provisioning is generally broken down into a set of stubs representing the lifecycles of a provisioned machine. And if you do VM provisioning with vSphere, you will get more into the extensibility stubs and lifecycle of a server. I am going to represent it a little bit differently: deliberately in a strange order.

Inventory and Custom Resources (because we need good maps)

vRA Advanced Service Designer has a concept of Custom Resources.  These Resources can be any item in plugin inventory in vRO as well as some of the built-in inventory in vRA (like Business Groups).  On these Resource Items, you can have metadata about the item and you can have Resource Actions that can be performed on the item (power on, power off, reboot, email administrator, install xyz, run report, etc etc).  For any Custom Resource, you can build any number of resource actions that are entitled to different people, and if you want... the actions can be set to require approvals to execute.  The key phrase in the prior sentence is "you can build."  You will not get out of the box actions for IBM servers.  With the introduction of Dynamic Types in vRO (which needs much work, but is very powerful, even in its current iteration), you can have Anything (including an IBM server, or a telephone, or a basket of stuffed animals)  as a Custom Resource... especially when leveraging a database table. (the record row is the resource and the record data is the metadata about the resource).  Any custom resource can be owned within a business group allowing for containerization and mapping assets to your existing cost centers and groups.

Actions (because we have to do deeds to the things we have)

Once you have an item, it represents a real thing in the world.  In your case: a provisioned and owned operating system, software, storage on IBM hardware:  aka an owned physical server.  IMM2 (if that is what you can use) can leverage a command line for some actions.  Powershell (telnet) or SSH will work for physical server side actions, and both will also work for OS actions.  There is a plugin for both in vRO.  If you write the actions you want to see happen, you can call them as actions on the Custom resource up in vRA.  (e.g. reboot machine from OS, hard reset from IMM2)  The actions will use the object as the target and go do the work that you set forth in your scripting. (and yes it is all scripting... no coding, no development)

Provisioning

Getting the REAL server on the wire with an OS can happen so many different ways, through practices and tools, that I won't go into it here.  You will need to look at how you will have a ready pool for physical servers.  Will the OS be installed already with an IP, and then a name assigned when an owner requests it?  Will it be PXE boot, OS install.  Do you have images today? Etc etc.

For network... If you are looking at going against an IPAM to get an IP address for static provisioning, there are two plugins available: Bluecat and Infoblox.  Or you can run your own in a IP database table through Dynamic Types or request externally via SOAP or REST.

For storage (SAN/NAS) there are a few plugins available for major storage vendors, or you have to go custom scripts.

Externalities

Everything you build by way of metadata is within what we can call the vRealize namespace.  For things you need to connect to externally to either inform or request, you can do so via SOAP and REST plugins in vRO.  An example would be if you needed to update a ServiceNow CMDB.

Requests

If you have everything above, this is the simple part.  You make a Service Blueprint called: "Get a Physical Server".  It can kick off to any number of approval levels that can be answered via Accept/Reject in email.  (SMTP service on the appliance)  Once approved, it runs your workflow in vRO that goes out and does the work.  If it succeeds, it returns your object type item (Custom Resource Item) with name for the Requestor who belongs to a Business Group.  They then have all the built actions on the item if they are entitled to see them.  (with a potential for Approvals if they choose to select one and run it)

What we are missing....

1. I will be pushing for lifecycle management on Custom Resource Types.  If we (the community) did stand up a Physical server in this manner, I would think we would want to set a lease on it that will allow us to call out a shutdown action  (or a notify action... or any action we choose).  We cannot currently set lease on Custom Resources.

2. I also want costs.  We cannot currently set costs on Custom Resource Types.  I want to be able to pool all virtual and physical servers into a common costing for the business group, which I admit I can get through configurations in ITBM Advanced... but within vRA is a convenient place for me to place cost on all resources owned.

I don't know if any of that really helps.  I hope it does.  I do not work for VMware, but I really do like this product (particularly vRO).  It isn't perfect but it is very powerful.

That said, I wouldn't use vRealize if I WAS NOT currently (or at least considering) deploying real virtual server workloads.  If I was only deploying IBM/Cisco/HP/Dell/Hitatchi physical servers, I would look to the product vendor for a solution.  I think it is fair to say that.  You gotta use what is best for you so you have ample free time for the luxuries in life.  Smiley Happy