Introducing SaltStack SDDC Modules

When we brought the SaltStack family of products onboard last year we had lots of use cases that we knew this great technology could help our customer achieve. Use cases like software deployment, self-healing, drift remediation and so much more. Also we have been hard at work integrating SaltStack Config into vRealize Automation to provide additional capabilities.

I am excited however to introduce our latest project that helps Salt bring value to your organization, open-source Salt Modules that provide hooks into components such as VMware Cloud on AWS, NSX-T and vSphere. These additional modules bring a rich set of capabilities to Salt and provide real value for our customers so they can manage SDDC. You can find the modules here on github. I also wanted to bring to your attention another module that was created earlier this year for vRealize Automation found here.

The vRealize Automation module can be used to configure an existing vRealize Automation instance, you can create cloud accounts, cloud zones, projects and cloud templates, and so much more. It is a great way to keep a standard configuration handy for your automation platform.

This open source project is available to both Salt and SaltStack Config customers and is a work in progress so we will see even more capabilities being delivered! A general list is below:

Getting Started

In order to get the modules loaded, login to your salt master where the modules will be located, it might be a good idea to have a dev system designated for this. You will want to pip install the modules to get all the modules loaded up on the system, the link to the latest version is For example you could do something like this on your master:

pip3 install saltext.vmware

This will install a collection of salt extension modules for use with vSphere, vCenter, ESXi, VMC on AWS. Then you can run the commands via CLI or build out State Files to call the modules. I would recommend using State Files and Pillar if you have SaltStack Config. Pillar data can be kept in the Config–>Pillar section or on the salt-master in /srv/pillar. Just remember to refresh pillar if you create pillar files and create a top.sls in /srv/pillar as well.

Once you run your state files in SaltStack Config you will see return data in the Activity–>Completed section, for example if I run a command to get all of my clusters then I would see something like this:

The modules and other data are generally located in:


There are currently no out-of-the-box state files but you can easily write your own. When looking at the python code in the modules just reference __virtualname__ as the first part of the command(module name) and the the functions then arguments.

For instance to reference what arguments need to be passed for the VMC Security Group create function you can reference the code:

Creating State Files

You can create state files to interact with these modules. Here is an example of a state file using pillar data to create a “test” VMC SDDC:

{% set sddc_name = salt['pillar.get']('sddc_name',) %}
{% set numhosts = "2" %}
    - name: vmc_sddc.create:
    - hostname: {{ pillar['vars']['hostname'] }}
    - refresh_key: {{ pillar['vars']['refresh_key'] }}
    - authorization_host:
    - org_id: {{ pillar['vars']['org_id'] }}
    - sddc_name: {{ sddc_name }}
    - num_hosts: {{ numhosts }}
    - provider: ZEROCLOUD
    - region: US_WEST_1
    - verify_ssl: False

If you are creating state files in SaltStack Config then you can then create a job to call this state file. You would then just run the job against the salt-master that has the modules loaded.

vRealize Automation Module

The vRealize Automation module is a bit different as we created that to be a custom module. So basically the module files can be git cloned down to /srv/salt/_modules (if this directory does not exist then you will need to create it). The modules can be found here. Then you will want to run the saltutil.refresh_modules command, then you can create state files similar to the one above and just pass the arguments for the function you are calling.

For example to create an AWS Cloud Account in vRealize Automation via the module you can use a state file like this:

    - name: vra.create_aws_ca
    - url: {{ pillar['vars']['url'] }}
    - username: {{ pillar['vars']['username'] }}
    - password: {{ pillar['vars']['password'] }}
    - aws_key_id: {{ pillar['vars']['aws_key_id'] }}
    - aws_access_key: {{ pillar['vars']['aws_access_key'] }}
    - m_name: AWS-Cloud-Account
    - region_name: us-west-1,us-west-2

This is a great start to our collection of SDDC modules for Salt. I am really looking forward to the development of these modules from both the open community and Salt folks here at VMware. The thought of our customers using SaltStack to manage their SDDC is super exciting and stay tuned to the github site to track progress and new developments!

The post Introducing SaltStack SDDC Modules appeared first on VMware Cloud Management.

Powered by WPeMatico