Fix – Unable to import vCAC/vRA certificates into Orchestrator


While in the vRealize Orchestrator Client you find that the Library/Configuration/SSL Trust Manager/”Import a certificate from URL” workflow returns an error reading “InternalError: handshake alert: unrecognized_name” when provided. The URL the resolves to the Load-Balancer VIP for the vCAC/vRA appliances.



Signed SSL certificate installed on vCAC/vRA Appliance, SSL Passthrough on NSX/vCNX Load-Balancer, vCAC/vRA Settings/Hostname set to resolve to VIP, matching SSL cert.



  1. SSH into the vCAC Appliance as root
  2. Backup /etc/apache2/vhosts.d/vcac.conf to vcac.conf.bak
  3. Use vi to edit /etc/apache2/vhosts.d/vcac.conf
  4. Scroll down to  <virtualHost _default_:443>
  5. Add these lines

    ServerName fqdn.of.appliance.node


  6. Scroll further to ensure these params aren’t listed elsewhere, remove or revise if so.
  7. save the file and exit vi
  8. restart the vCAC/vRA services

Automating NSX Security Groups with vCAC/vRA – Part 2

***UPDATE***  The download link is currently broken.   I seem to have lost the file, will fix the link as soon as I find or recreate it.  Sorry about that. 😦

In part 1 of this series, we created a list of security groups and displayed that list to users during the request.  In this post, we want to enhance that functionality by adding these features.

  • Creation of Security Groups and inclusion in Dropdown lists
  • Add a VM to a Security Group post-provisioning
  • Import existing Security Groups into vRA inventory
  • Add a Security Group to a Dropdown list

We’re going to do that by importing a vCO package with some new workflows and actions, then link up the workflows to Advanced Services and Resource Actions.  As before, we’ll require the NSX and vCAC/vRA plugins for Orchestrator.


  • Complete the creation of the VCNS.SecurityGroup.Names.production property dictionary and valuelist attribute from Part 1.  We’re going to reuse those items. so make a note of the exact name of the property dictionary and the valuelist attribute.  In my case, I’ve named the Property Dictionary VCNS.SecurityGroup.Names.production and also named the valuelist attribute for it VCNS.SecurityGroup.Names.production
  • Make sure vRA Advanced Services Server Configuration is complete and test the connection to the Orchestrator server.  The default, built-in VCO is fine.
  • Login to vCO client as a vCO Admin. Set the mode to “Design” and navigate to the Inventory tab.  Make sure that you have a connection listed under “vCAC Infrastructure Administration” and a connection listed under “NSX”.


Confirm that you have the necessary connections on the inventory tab
Confirm that you have the necessary connections on the inventory tab

Get the Package

I’ve put together a handful of workflows and actions that use or expand the NSX plugin to provide information of functionallity back to vRA.  Where possible, I reused existing library workflows, but in some cases, I had to use the API to create a REST call and consume that in an action.

By downloading any code, package or file, you acknowledge that:

There is no explicit or implied warranty or support for the code.  Neither Brian Ragazzi, his employer nor anyone else is responsible for any problems, errors, omissions, unexpected behavior, breakage, trauma, outage, fatigue, lost time, lost work or incontinence that may occur as a result of using the code or package.

Download the zip file.  It contains the package and a couple of images that can be used for the advanced services

Import the Package

  1. Extract the zip file
  2. In the vCO Client, navigate to the packages tab.
  3. Click the “import package” button and select the extracted .package file
  4. On the Package Import Information step, click “Import

    Package Import Information
    Package Import Information
  5. On the Import package… step, check the “Select/Deselect all” box to check all of the items.  Please note the server path, these should not be duplicates of anything else you have in your vCO inventory (unless you’ve already imported this package previously).  Click “Import Selected elements”.

    Select all items
    Select all items
  6. Review the workflows and actions added to your inventory.

Configure Advanced Services – Create Security Group

This service enables the user to create a new NSX Security Group and automatically adds its name to the appropriate dropdown list of security groups.  It can be added once for each different list of security groups.  You’ll need to know the exact name of the Property Dictionary and valuelist attribute you created in Part 1.

NSX Management Services
NSX Management Services
NSX Security Groups in vRA Items
NSX Security Groups in vRA Items
  1. While logged into vRA as a service architect, navigate to the Advanced Services tab, click “Custom Resources
  2. We need to make vRA aware of NSX Security Groups.  Click the Add button.
  3. In the Orchestrator Type field, enter “NSX:SecurityGroup“; for the Name, I suggest “NSX Security Group“, click Next

    Add NSX Security Group as Custom Resource
    Add NSX Security Group as Custom Resource
  4. On the details form, we’re not going to make any changes, but if you wanted to hide certain properties, you could here.  Click “Add“.
  5. Click “Service Blueprints”, then the “Add” button.
  6. On the Workflow tab, select the AddNewSecurityGrouptoDropdown workflow, click next.

    Select "AddNewSecurityGrouptoDropdown" workflow
    Select “AddNewSecurityGrouptoDropdown” workflow
  7. On the Details tab, set the name to something like “Create new Production NSX Security Group“, because we’re going to create the security group and add its name to the “production”dropdown list.  Click Next.

    Set the Service Item Name
    Set the Service Item Name
  8. On the Blueprint  Form tab, under the “Step” Form page (default), mouseover the text field labelled “Name of Custom Property Dictionary in vCAC/vRA”.  Click the pencil “edit” icon when it appears.

    Edit the Form Fields
    Edit the Form Fields
  9. Click the Constraints tab of the “Edit Form Field” window.  On the Value field, select “Constant” and enter “VCNS.SecurityGroup.Names.Production” (or whatever suffix you used) for the Property Dictionary.  Set the Visible value to “No” so it doesn’t show up. Click Submit on the Edit Form Field window.

    Set the name of the Property Dictionary to be updated
    Set the name of the Property Dictionary to be updated
  10. Using the same method, set the Name of the Attribute appropriately and its visibility to no
  11. Edit the “Value to be appended to the ValueList attribute” field.  Set the label to “New Security Group Name“.  Do not set a value or make this one invisible, we need the user to enter a value, submit to save.
  12. Edit the vCACIaaSHost field – using the Constraints tab again– when setting the value, choose constant, then click Add by the green plus, to display a treeview, where you can choose your connection to the IaaS Server.  Visible: No, submit to save.

    Select connection to IaaS host
    Select connection to IaaS host
  13. Edit the “NSX endpoint” field in the same way, selecting the NSX connection.
  14. When done, all fields except “New Security Group Name” will have a value.  Click Next.
  15. On the Provisioned Resource tab, select “securityGroup [NSX Security Group]“.  Click Add to save the service blueprint.
  16. Repeat steps 5-15 for any other dropdown lists containing security groups; say “Non-Production” for instance
  17. Highlight the Service Blueprint and click “Publish” to make the blueprint available for entitlements
  18. Navigate to Administration, Services.
  19. Add a new Service named “NSX Management” (for example) – I included a nifty image in the zip file
  20. Under Catalog Items, click the “Create new Production NSX Security Group” item to edit it.
  21. The Catalog item should inherit the Security Group icon from vCO, set its Service to “NSX Management”,click update to save.
  22. Create or Edit an entitlement to include the new Service and/or catalog item.
  23. Try it out, confirm that the Security Group was created in NSX, is visible in vCAC items and it name was added to the Property Dictionary

Configure Advanced Services – Import Security Group

This service allows you to make existing security groups visible as items in the vCAC Items view.  Once this is done, we’ll add actions that allow you to add the security group to a dropdown list.

  1. Click “Service Blueprints”, then the “Add” button.
  2. Select the “GetNSXSecurityGroup” workflow, click Next
  3. On the details tab, set the name to “Import NSX Security Group“, click Next
  4. On the Blueprint form, set the “connection” to the NSX connection in vCO, then hide the field.  Security Group Name will be a dropdown list of existing NSX Security Groups for the user to choose from. Click Next
  5. On the Provisioned Resource tab, select “securityGroup [NSX Security Group]“.  Click Add to save the service blueprint.
  6. Just as before, publish the service blueprint, add it to a service and an entitlement.

 Configure Advanced Services – Add Security Group to Dropdown list

With this service, we’ll let the user add the name of an existing Security Group to a drop down list.  Unlike the first two, this is implemented as a Resource Action, meaning it’ll be executed against an existing item (a Security Group in this case)

  1. Under Resource Actions, click “Add”
  2. For the Workflow, select the “AddExistingSecurityGrouptoDropdown“, click Next
  3. On the “Input Resource” tab, keep NSX Security Group, click Next
  4. On the Details tab, set the Name to “Add Security Group to Production list” or similar, set the description, leave the Type options unchecked.  click Next

    Set Action Name and Description
    Set Action Name and Description
  5. On the Form tab, just like the first service blueprint, set the Property Dictionary and Attribute names as appropriate.  VCNS.SecurityGroup.Names.production in my example, set visible to no on both.
  6. Again, we’ll set the vCACIaaSHost to the connection to the Server and hide the field
  7. Click Add to save the action.
  8. Repeat steps 1-6 for each security group dropdown list (say “non-production” for instance)
  9. Publish the action and add it to an entitlement

    Add Action to Entitlement
    Add Action to Entitlement
  10. Test by navigating toNSX under Items, highlight a Security group and Select “Add Security Group to…” from the Actions menu.

    Yay! A Resource Action
    Yay! A Resource Action

 Configure Advanced Services – Add VM to a Security Group

This service lets you add a provisioned VM to additional Security Groups.  So, at provisioning-time, the VM is added to the Security Group selected by the user, but we may need to refine the security by adding that VM to additional Security Groups.

  1. Under Resource Actions, click “Add
  2. For the Workflow, select the “AddVMtoSecurityGroup“, click Next
  3. On the “Input Resource” tab, keep IaaS VC VirtualMachine, click Next
  4. On the Details tab, set the name to “Add VM to a Security Group“, click Next
  5. On the Form tab, set the connection Value to the NSX connection.
  6. Leave the NSX Security Group field visible, click Add to save the action
  7. Publish the action and add it to an entitlement
  8. Test by selecting a machine under Items and “Add VM to a Security Group” from the Actions menu

    VM Resource Action for Security Groups
    VM Resource Action for Security Groups
  9. You’ll be presented with the list of allNSX Security Groups to which you can add the selected VM

    Select Security Group
    Select Security Group


This part of the series should help streamline the management of VMs and their membership in Security Groups.  Obviously, items like removing a VM from a Security Group or even removing a Security Group are not included here.  The NSX plugin is missing quite a bit of functionality available in the API, so those additional functions require significantly more configuration.

Thanks to John Dias for his information and examples posted here.


Automating NSX Security Groups with vCAC/vRA – Part 1

In this series, I’ll document how to automate the creation and (some of) the management of NSX security groups within NSX.

First, what’s the use case?  Why is this interesting?  Let’s assume that you’ve decided to use large “flat” networks instead of many small networks.  One reason you may make that decision is because of the challenges with either having many blueprints (one per network!) or making changes to the workflows to reliably set the appropriate properties.


In this solution, we’ll have to have vCAC 6.1 or vRealize Automation 6.2, NSX 6.x and vCenter/vRealize Orchestrator with the vCAC and NSX plugins installed and configured. We have two Logical Switches, one for Production and one for Non-Production.  In addition, there’s a corresponding network profile and the business groups have reservations.  Now, we have to ensure that there  are security boundaries within the flat networks.  We’ll accomplish this through Security Groups.


We’ll create security groups and nod in the direction of security profiles, but will not be automating the creation of security profiles nor their assignment to the Security Group(s).  That can be done by the security admins through the NSX interface or maybe later we’ll add that capability too. 😉


  1. Create Security Groups.
    • Open vSphere Web Client and navigate to Networking and Security, then Service Composer.
    • Click the “New Security Group” icon
    • Enter a Name and Description for your new Security Group and click Next
    • If you want to create rules for dynamic membership or include/exclude existing VMs, you can do so in the subsequent steps.  Finish the wizard.
    • Repeat to create all of your security groups
    • Create Security Groups in NSX
      Create Security Groups in NSX
  2. Create Property Dictionaries invCAC/vRA.
    • Log into vCAC as an Infrastructure Admin and navigate to Infrastructure|Blueprints|Property Dictionary
    • Click “New Property Definition”, for the name enter “VCNS.SecurityGroup.Names.Production“.  You can replace “Production” with a name of your choosing, so you can have multiple lists.
    • Select “DropDownList” as the control type and check to make it required, click the green check to save.

      Create Property Dictionary
      Create Property Dictionary
    • Click the “Edit” link in the Property Attributes column
    • Click “New Property Attribute”, select “ValueList” as the attribute type
    • Set the name to something appropriate, such as the same name as the Property Definition or “ValueList” or “SecurityGroups”
    • In the Value field, enter the names of the security groups you want included.  Separate the group names by commas (no spaces).  If you have groups whose names include spaces or commas, put them in quotes.  Click the green check to save.
    • Repeat to create another property dictionary and attribute for the Non-Production list
  3. Update Blueprints.
    • Edit your “production” blueprints by adding the “VCNS.SecurityGroup.Names.Production” custom property. Set the value to your default security group or leave it blank to require a selection. Be sure to check the “Prompt User” box. Click the green check to save.

      Add Custom Property to Blueprint
      Add Custom Property to Blueprint
  4. Test
    • Submit a request for the affected blueprint and verify that the dropdown list of security groups looks like you expect it to. Remember, that unlike many other custom properties in vCAC (eg: Network Profiles), you CAN have multiple versions of this one and display different lists.

      Dropdown list of Security Groups
      Dropdown list of Security Groups
    • After a VMis provisioned, verify in the vSphere Web Client that ithas been assigned to the expected security group

      VM added to Security Group
      VM added to Security Group


In the next parts of this series, I plan to address the problems of maintaining the dropdown list manually and having a single security group per machine.

Many thanks to my friend Grant Orchard for his article on selecting a security group in a blueprint . It was the inspiration for this series.

Connecting vRealize Automation Gugent in a Distributed deployment – some notes

Configuring a distributed vCAC 6.x or vRealize Automation 6.2 installation, ran into a few issues and thought I’d document them.

  • The Gugent points to the vCAC IaaS Manager Service, not the vCAC Web/Model Manager
  • Test by browsing to https://[vcacmanager]/VMPS
  • If you are using vCNS or NSX as your load balancer, use these settings for the virtual address (these worked for me):
    • Application Profile: TCP, no persistence
    • Pool: IP-HASH algorithm, Monitor: NONE.  One enabled member, port 443, not transparent
    • Virtual Server: TCP 443, Pool and App Profile from above
  • Confirm the Gugent is working properly before configuring a template for Application Services

The Value of EMC Enterprise Hybrid Cloud

EMC Enterprise Hybrid CloudFull disclosure: I work for EMC and am a lead architect in the EMC Enterprise Hybrid Cloud “SWAT” team.

What is it?

Much like VCE Vblock converged infrastructure systems, EHC is an engineered solution.  This means that its components have been tested and integrated to work together and it is supported as a unit.

The Value

I compare the solution to Vblock frequently, because in the early days of VCE/Acadia, many people did not understand the value of converged infrastructure.  It took a while for many folks to understand how it saves time, frustration and money over building a solution in-house from selected components.  Nowadays, most enterprise IT shops understand that converged infrastructure brings a level of integrated support that is not available when you support individual components of the solution.

EMC Enterprise Hybrid Cloud: Federation SDDC Edition (just “EHC” for this discussion) brings many VMware and EMC components together with integration and support.  Sure, the front-end of EHC – what you’ve seen pictures of – is VMware vRealize Automation.  What you may not see in that picture is the integration of EMC ViPR that allows selected admins to provision a new datastore to hosts in a vSphere cluster from the same portal.  You may not see in that picture the tight Backup-as-a-Service integration with IaaS; while requesting a new VM, the requestor can select a backup policy for the new VM.  It is automatically added to a backup job and the machine owner can choose to perform a backup or restore on demand – from the same portal.

Another important feature of EHC that cannot be “seen” is the vast engineering time that has been put into ensuring the components and their versions work together flawlessly.  You cannot see the countless hours spent testing and retesting the workflows to ensure they behave as expected.

It is this time that the EMC EHC team has invested in the solution, so that customers can rely on the solution for Enterprise IT operations and not have to worry about version x.xx of a component working correctly with version y.yy of another.

Lastly, the EHC solution is ready to use very quickly.  This means that customer’s time-to-value is very short and they can begin realizing the benefits almost immediately.

The Future

The EHC Federation SDDC edition will continue to evolve, using newer versions of components only once they’ve been fully vetted.  I predict more integration with network services, a solution integrated with RecoverPoint, VPLEX and Site Recovery Manager.


Jeez, this does sound like a marketing pitch, sorry.  I really do thing this is a great solution and a great direction from EMC.  I won’t give away any of the secrets in the solution, but you can bet that the fix to some of the bumps-in-the-road we hit will be blogged about here.

vCloud Automation Center bullet points

Just a quick couple of points from the past couple of days:

  1. vCloud Automation Center will be renamed vRealize Automation
  2. The minimal vCAC deployment is NOT just for POCs, it is suitable for production up to ~1000 VMs
  3. Going forward, code will be moved from .NET to Java on the appliance.
  4. Also going forward, most work done by the DEMs and agents will be handled by Orchestrator. I like this, as it opens up even more opportunities for extensibility

Adding a vCloud Air Endpoint to vCloud Automation Center

vCAC Service Catalog
vCAC Service Catalog

So, you have vCAC configured locally and now have access to vCHS vCloud Air and want to create an endpoint to provision machines to your virtual data center.

In this example, the vCloud Air account has a Virtual Private Cloud.


vCloud Hybrid Service was recently renamed to vCloud Air to reflect it changing services (and to get people to stop calling it vCHeeSe).  It uses a lot of vCloud Director terminology and behavior.


  1. Make sure your vCloud Air account setup is completed.
  2. Login to your vCloud Air account
  3. Have credentials for an Infrastructure Admin on vCloud Automation Center

Get Information

What? Where? How?
vCloud Air Username and Password duh!  hello-my-name-is-nametag
Virtual Data Center Name On the Dashboard, under VIRTUAL DATA CENTERS, the top line in bold is the virtual data center name.

Virtual Data Center
Virtual Data Center
vCloud Director API URL Click the name of your virtual data center (it doesn’t give you the pointing-finger icon, but it is a link) to view the details.  On the right, under RELATED LINKS, click “vCloud Director API URL”.  Copy the value and paste it somewhere handy.

vCloud Director API URL
vCloud Director API URL
Network details  While still in the Virtual Data Center details, click the Networks tab to view a list of the defined networks.  By default you’ll have a “Default-Isolated” and a “Default-Routed”.  You can create more, but for this example, I’m just going to use the default-routed network. Locate the network and record the gateway IP.  Make a note of the network size (/24 in this case) and the IP Range.  The IP range is the range of values that vCloud Director/vCloud Air will assign to newly-created VMs in this network.

Default Routed Network Details
Default Routed Network Details


Configure vCAC

  1. Logon to vCAC Console as an Infrastructure Administrator
  2. Navigate to Infrastructure/Endpoints
  3. Click New Endpoint/Cloud/vApp (vCloud Director)
  4. In the Endpoint configuration, give it a catchy name like “vCloud Air” and description.
  5. In the Address field, paste the vCloud Director API URL, but only up to the :443.  Don’t need the path.
  6. In the Organization field, paste the Virtual Data Center Name – it’s case-sensitive.
  7. If you have Custom Properties to be applied, you can add them now or later.
  8. Click OK to save your endpoint

    vCAC Endpoint for vCloud Air
    vCAC Endpoint for vCloud Air
  9. On the list of Endpoints, mouseover the new one and choose Data Collection from the menu. On the Data Collection status page, click the Start button to begin data collection
  10. After the data collection completes successfully, you will be able to create or edit a fabric group to add the Virtual Data Center as a Compute resource.

Next Steps

  1. Create a network profile for the network(s) you recorded earlier.  I suggest configuring the vCAC Network Profile IP Range to be exclusive of the vCD IP range
  2. Create reservations for your business groups on the vCloud Air Compute Resource
  3. Consider a Reservation Policy for your vCloud Air reservations

Coming Soon

I’m hoping to configure the VPN connection to extend my lab network to the virtual data center. Creating blueprints for use on vCloud Air, making existing blueprints work on vCloud Air.

Thanks to David Hill for his post about this very topic


vCAC 6.0 IaaS .NET Framework – Quick note

The Windows 2008 R2 template I was deploying the IaaS component for vCAC on already has .NET Framework 4.5.1 installed. The .NET Framework 4.5 installer downloaded from the vCAC server indicated that a newer version was installed and made no changes. However, the IaaS component installer did not complete successfully and the setup log files indicated that .NET 4.5 was not found. I had to remove 4.5.1 and replace it with the 4.5 version downloaded from the vCAC server.

TR;DR – Remove .NET FW 4.5.1, replace it with .NET FW 4.5

The vCAC 6.0.1 release notes explain that support has not been extended to .NET 4.5.1, so for now, you will have to roll back to .NET 4.5.

Resolving vCAC Design Center Crash

After having installed the vCAC Design Center, every attempt to run it failed. The GUI would not load. In my case, the Windows Application log recorded the error:

.NET Runtime Event ID 1026 in Application CloudUtil.
Framework Version v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Reflection.TargetInvocationException.

Only when I tried calling CloudUtil.exe from the command line did I get an error message indicating that the application could not establish a trust relationship with the vCAC MOdel Manager. This meant that the self-signed SSL cert was not trusted.

Logon to vCAC administration portal and import the SSL certificate into the “Trusted Root Certification Authorities\Local Computer” physical Certificate Store.

After this, I was able to successfully launch the vCAC Design Center.