Source code: https://github.com/saltstack/salt/blob/v3006.7/salt/proxy/vcenter.py
Documentation: https://docs.saltproject.io/en/3007/ref/proxy/all/salt.proxy.vcenter.html
module: https://docs.saltproject.io/en/3006/ref/modules/all/salt.modules.vsphere.html
Depending on the version of vsphere, you must install pyvomi
salt-call pip.install pyvmomi==8.0.3.0.1
sample configs:
version:
root@master01:~# salt --versions-report
Salt Version:
Salt: 3006.16
Packages:
root@master01:~# salt-call pip.list
local:
----------
CherryPy:
18.10.0
Jinja2:
3.1.6
MarkupSafe:
2.1.2
PyJWT:
2.10.1
PyNaCl:
1.6.0
PyYAML:
6.0.2
Pygments:
2.19.2
SSEAPE:
8.17.0.6
attrs:
25.3.0
autocommand:
2.2.2
backports.tarfile:
1.2.0
bcrypt:
4.3.0
certifi:
2024.7.4
cffi:
1.14.6
charset-normalizer:
3.2.0
cheroot:
8.5.2
contextvars:
2.4
croniter:
2.0.5
cryptography:
42.0.5
distro:
1.5.0
frozenlist:
1.7.0
idna:
3.7
immutables:
0.21
importlib_metadata:
6.0.0
invoke:
2.2.0
jaraco.classes:
3.2.1
jaraco.collections:
3.4.0
jaraco.context:
6.0.1
jaraco.functools:
4.2.1
jaraco.text:
4.0.0
jmespath:
1.0.1
jsonschema:
4.25.1
jsonschema-specifications:
2025.9.1
junos-eznc:
2.7.5
looseversion:
1.0.2
lxml:
6.0.2
markdown-it-py:
4.0.0
mdurl:
0.1.2
more-itertools:
10.7.0
msgpack:
1.0.2
napalm:
5.1.0
ncclient:
0.7.0
netaddr:
1.3.0
netmiko:
4.6.0
netutils:
1.15.0
ntc_templates:
8.1.0
packaging:
24.0
paramiko:
4.0.0
pika:
1.3.2
pip:
23.3.2
portend:
2.4
psutil:
5.8.0
pyOpenSSL:
24.0.0
pycparser:
2.21
pycryptodomex:
3.19.1
pyeapi:
1.0.4
pyparsing:
3.2.5
pyserial:
3.5
python-dateutil:
2.8.1
python-gnupg:
0.4.8
pytz:
2022.1
pyvmomi:
8.0.3.0.1
pyzmq:
23.2.0
referencing:
0.36.2
relenv:
0.20.6
requests:
2.32.3
rich:
14.1.0
rpds-py:
0.27.1
rpm_vercmp:
0.1.2
ruamel.yaml:
0.18.15
ruamel.yaml.clib:
0.2.14
salt:
3006.16
scp:
0.15.0
setproctitle:
1.3.2
setuptools:
79.0.1
six:
1.16.0
tempora:
4.1.1
textfsm:
2.1.0
timelib:
0.3.0
transitions:
0.9.3
ttp:
0.9.5
ttp-templates:
0.3.7
typing_extensions:
4.15.0
urllib3:
2.5.0
wheel:
0.45.1
yamlordereddictloader:
0.4.2
zc.lockfile:
1.4
zipp:
3.6.0
proxy-minion config:
root@master01:/srv/pillar# pwd
/srv/pillar
root@master01:/srv/pillar# ls
top.sls vcenter-proxy.sls vyos-router-01.sls
root@master01:/srv/pillar# cat top.sls
base:
'vyos':
- vyos-router-01
'my-vcenter-proxy':
- vcenter-proxy
root@master01:/srv/pillar# cat vcenter-proxy.sls
proxy:
proxytype: vcenter
vcenter: vcsa01.rainpole.local
username: '[email protected]'
passwords:
- 'VMware123!'
mechanism: userpass
root@master01:/srv/pillar# cat vyos-router-01.sls
proxy:
proxytype: netmiko
device_type: vyos # Required for Netmiko to recognize the device type
host: 192.168.1.254
username: vyos
password: 'VMware123!'
always_alive: True
root@master01:/srv/pillar#
root@master01:/etc/salt/proxy.d# ls
my-vcenter-proxy vyos
root@master01:/etc/salt/proxy.d# cat my-vcenter-proxy/
_schedule.conf vc.sls
root@master01:/etc/salt/proxy.d# cat my-vcenter-proxy/vc.sls
master: 192.168.103.45
id: my-vcenter-proxy
add_proxymodule_to_opts: False
start minion:
salt-proxy --proxyid my-vcenter-proxy
Accept keys
salt-key -A
Test minion:
root@master01:/etc/salt/proxy.d# salt my-vcenter-proxy test.ping
my-vcenter-proxy:
True
Available module for vCenter:
my-vcenter-proxy:
———-
vsphere.:
vsphere.add_capacity_to_diskgroup:
Adds capacity disks to the disk group with the specified cache disk.
cache_disk_id
The canonical name of the cache disk.
capacity_disk_ids
A list containing canonical names of the capacity disks to add.
safety_checks
Specify whether to perform safety check or to skip the checks and try
performing the required task. Default value is True.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.add_capacity_to_diskgroup
cache_disk_id=’naa.000000000000001′
capacity_disk_ids='[naa.000000000000002, naa.000000000000003]’
vsphere.add_host_to_dvs:
Adds an ESXi host to a vSphere Distributed Virtual Switch and migrates
the desired adapters to the DVS from the standard switch.
host
The location of the vCenter server.
username
The username used to login to the vCenter server.
password
The password used to login to the vCenter server.
vmknic_name
The name of the virtual NIC to migrate.
vmnic_name
The name of the physical NIC to migrate.
dvs_name
The name of the Distributed Virtual Switch.
target_portgroup_name
The name of the distributed portgroup in which to migrate the
virtual NIC.
uplink_portgroup_name
The name of the uplink portgroup in which to migrate the
physical NIC.
protocol
Optionally set to alternate protocol if the vCenter server or ESX/ESXi host is not
using the default protocol. Default protocol is “https“.
port
Optionally set to alternate port if the vCenter server or ESX/ESXi host is not
using the default port. Default port is “443“.
host_names:
An array of VMware host names to migrate
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt some_host vsphere.add_host_to_dvs host=’vsphere.corp.com’
username=’[email protected]’ password=’vsphere_password’
vmknic_name=’vmk0′ vmnic_name=’vnmic0′ dvs_name=’DSwitch’
target_portgroup_name=’DPortGroup’ uplink_portgroup_name=’DSwitch1-DVUplinks-181′
protocol=’https’ port=’443′, host_names=”[‘esxi1.corp.com’,’esxi2.corp.com’,’esxi3.corp.com’]”
Return Example:
somehost:
———-
esxi1.corp.com:
———-
dvs:
DSwitch
portgroup:
DPortGroup
status:
True
uplink:
DSwitch-DVUplinks-181
vmknic:
vmk0
vmnic:
vmnic0
esxi2.corp.com:
———-
dvs:
DSwitch
portgroup:
DPortGroup
status:
True
uplink:
DSwitch-DVUplinks-181
vmknic:
vmk0
vmnic:
vmnic0
esxi3.corp.com:
———-
dvs:
DSwitch
portgroup:
DPortGroup
status:
True
uplink:
DSwitch-DVUplinks-181
vmknic:
vmk0
vmnic:
vmnic0
message:
success:
True
This was very difficult to figure out. VMware’s PyVmomi documentation at
https://github.com/vmware/pyvmomi/blob/master/docs/vim/DistributedVirtualSwitch.rst
(which is a copy of the official documentation here:
https://www.vmware.com/support/developer/converter-sdk/conv60_apireference/vim.DistributedVirtualSwitch.html)
says to create the DVS, create distributed portgroups, and then add the
host to the DVS specifying which physical NIC to use as the port backing.
However, if the physical NIC is in use as the only link from the host
to vSphere, this will fail with an unhelpful “busy” error.
There is, however, a Powershell PowerCLI cmdlet called Add-VDSwitchPhysicalNetworkAdapter
that does what we want. I used Onyx (https://labs.vmware.com/flings/onyx)
to sniff the SOAP stream from Powershell to our vSphere server and got
this snippet out:
<UpdateNetworkConfig xmlns=”urn:vim25″>
<_this type=”HostNetworkSystem”>networkSystem-187</_this>
<config>
<vswitch>
<changeOperation>edit</changeOperation>
<name>vSwitch0</name>
<spec>
<numPorts>7812</numPorts>
</spec>
</vswitch>
<proxySwitch>
<changeOperation>edit</changeOperation>
<uuid>73 a4 05 50 b0 d2 7e b9-38 80 5d 24 65 8f da 70</uuid>
<spec>
<backing xsi:type=”DistributedVirtualSwitchHostMemberPnicBacking”>
<pnicSpec><pnicDevice>vmnic0</pnicDevice></pnicSpec>
</backing>
</spec>
</proxySwitch>
<portgroup>
<changeOperation>remove</changeOperation>
<spec>
<name>Management Network</name><vlanId>-1</vlanId><vswitchName /><policy />
</spec>
</portgroup>
<vnic>
<changeOperation>edit</changeOperation>
<device>vmk0</device>
<portgroup />
<spec>
<distributedVirtualPort>
<switchUuid>73 a4 05 50 b0 d2 7e b9-38 80 5d 24 65 8f da 70</switchUuid>
<portgroupKey>dvportgroup-191</portgroupKey>
</distributedVirtualPort>
</spec>
</vnic>
</config>
<changeMode>modify</changeMode>
</UpdateNetworkConfig>
The SOAP API maps closely to PyVmomi, so from there it was (relatively)
easy to figure out what Python to write.
vsphere.add_license:
Adds a license to the vCenter or ESXi host
key
License key.
description
License description added in as a label.
safety_checks
Specify whether to perform safety check or to skip the checks and try
performing the required task
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.add_license key=<license_key> desc=’License desc’
vsphere.assign_default_storage_policy_to_datastore:
Assigns a storage policy as the default policy to a datastore.
policy
Name of the policy to assign.
datastore
Name of the datastore to assign.
The datastore needs to be visible to the VMware entity the proxy
points to.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.assign_storage_policy_to_datastore
policy=’policy name’ datastore=ds1
vsphere.assign_license:
Assigns a license to an entity
license_key
Key of the license to assign
See “_get_entity“ docstrings for format.
license_name
Display name of license
entity
Dictionary representation of an entity
entity_display_name
Entity name used in logging
safety_checks
Specify whether to perform safety check or to skip the checks and try
performing the required task. Default is False.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.assign_license license_key=AAAAA-11111-AAAAA-11111-AAAAA
license_name=test entity={type:cluster,datacenter:dc,cluster:cl}
vsphere.compare_vm_configs:
Compares virtual machine current and new configuration, the current is the
one which is deployed now, and the new is the target config. Returns the
differences between the objects in a dictionary, the keys are the
configuration parameter keys and the values are differences objects: either
list or recursive difference
new_config:
New config dictionary with every available parameter
current_config
Currently deployed configuration
vsphere.configure_host_cache:
Configures the host cache on the selected host.
enabled
Boolean flag specifying whether the host cache is enabled.
datastore
Name of the datastore that contains the host cache. Must be set if
enabled is “true“.
swap_size_MiB
Swap size in Mibibytes. Needs to be set if enabled is “true“. Must be
smaller than the datastore size.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.configure_host_cache enabled=False
salt ‘*’ vsphere.configure_host_cache enabled=True datastore=ds1
swap_size_MiB=1024
vsphere.create_cluster:
Creates a cluster.
Note: cluster_dict[‘name’] will be overridden by the cluster param value
config_dict
Dictionary with the config values of the new cluster.
datacenter
Name of datacenter containing the cluster.
Ignored if already contained by proxy details.
Default value is None.
cluster
Name of cluster.
Ignored if already contained by proxy details.
Default value is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
# esxdatacenter proxy
salt ‘*’ vsphere.create_cluster cluster_dict=$cluster_dict cluster=cl1
# esxcluster proxy
salt ‘*’ vsphere.create_cluster cluster_dict=$cluster_dict
vsphere.create_datacenter:
Creates a datacenter.
Supported proxies: esxdatacenter
datacenter_name
The datacenter name
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.create_datacenter dc1
vsphere.create_diskgroup:
Creates disk group on an ESXi host with the specified cache and
capacity disks.
cache_disk_id
The canonical name of the disk to be used as a cache. The disk must be
ssd.
capacity_disk_ids
A list containing canonical names of the capacity disks. Must contain at
least one id. Default is True.
safety_checks
Specify whether to perform safety check or to skip the checks and try
performing the required task. Default value is True.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.create_diskgroup cache_disk_id=’naa.000000000000001′
capacity_disk_ids='[naa.000000000000002, naa.000000000000003]’
vsphere.create_dvportgroup:
Creates a distributed virtual portgroup.
Note: The “portgroup_name“ param will override any name already set
in “portgroup_dict“.
portgroup_dict
Dictionary with the config values the portgroup should be created with
(example in salt.states.dvs).
portgroup_name
Name of the portgroup to be created.
dvs
Name of the DVS that will contain the portgroup.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.create_dvportgroup portgroup_dict=<dict>
portgroup_name=pg1 dvs=dvs1
vsphere.create_dvs:
Creates a distributed virtual switch (DVS).
Note: The “dvs_name“ param will override any name set in “dvs_dict“.
dvs_dict
Dict representation of the new DVS (example in salt.states.dvs)
dvs_name
Name of the DVS to be created.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.create_dvs dvs dict=$dvs_dict dvs_name=dvs_name
vsphere.create_storage_policy:
Creates a storage policy.
Supported capability types: scalar, set, range.
policy_name
Name of the policy to create.
The value of the argument will override any existing name in
“policy_dict“.
policy_dict
Dictionary containing the changes to apply to the policy.
(example in salt.states.pbm)
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.create_storage_policy policy_name=’policy name’
policy_dict=”$policy_dict”
vsphere.create_vm:
Creates a virtual machine container.
CLI Example:
salt vm_minion vsphere.create_vm vm_name=vmname cpu='{count: 2, nested: True}’ …
vm_name
Name of the virtual machine
cpu
Properties of CPUs for freshly created machines
memory
Memory size for freshly created machines
image
Virtual machine guest OS version identifier
VirtualMachineGuestOsIdentifier
version
Virtual machine container hardware version
datacenter
Datacenter where the virtual machine will be deployed (mandatory)
datastore
Datastore where the virtual machine files will be placed
placement
Resource pool or cluster or host or folder where the virtual machine
will be deployed
devices
interfaces
interfaces:
adapter: ‘Network adapter 1’
name: vlan100
switch_type: distributed or standard
adapter_type: vmxnet3 or vmxnet, vmxnet2, vmxnet3, e1000, e1000e
mac: ’00:11:22:33:44:55′
connectable:
allow_guest_control: True
connected: True
start_connected: True
disks
disks:
adapter: ‘Hard disk 1’
size: 16
unit: GB
address: ‘0:0’
controller: ‘SCSI controller 0’
thin_provision: False
eagerly_scrub: False
datastore: ‘myshare’
filename: ‘vm/mydisk.vmdk’
scsi_devices
scsi_devices:
controller: ‘SCSI controller 0’
type: paravirtual
bus_sharing: no_sharing
serial_ports
serial_ports:
adapter: ‘Serial port 1’
type: network
backing:
uri: ‘telnet://something:port’
direction: <client|server>
filename: ‘service_uri’
connectable:
allow_guest_control: True
connected: True
start_connected: True
yield: False
cd_drives
cd_drives:
adapter: ‘CD/DVD drive 0’
controller: ‘IDE 0’
device_type: datastore_iso_file
datastore_iso_file:
path: path_to_iso
connectable:
allow_guest_control: True
connected: True
start_connected: True
advanced_config
Advanced config parameters to be set for the virtual machine
vsphere.create_vmfs_datastore:
Creates a ESXi host disk group with the specified cache and capacity disks.
datastore_name
The name of the datastore to be created.
disk_id
The disk id (canonical name) on which the datastore is created.
vmfs_major_version
The VMFS major version.
safety_checks
Specify whether to perform safety check or to skip the checks and try
performing the required task. Default is True.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.create_vmfs_datastore datastore_name=ds1 disk_id=
vmfs_major_version=5
vsphere.delete_advanced_configs:
Removes extra config parameters from a virtual machine
vm_name
Virtual machine name
datacenter
Datacenter name where the virtual machine is available
advanced_configs
List of advanced config values to be removed
service_instance
vCenter service instance for connection and configuration
vsphere.delete_vm:
Deletes a virtual machine defined by name and placement
name
Name of the virtual machine
datacenter
Datacenter of the virtual machine
placement
Placement information of the virtual machine
service_instance
vCenter service instance for connection and configuration
CLI Example:
salt ‘*’ vsphere.delete_vm name=my_vm datacenter=my_datacenter
vsphere.disconnect:
Disconnects from a vCenter or ESXi host
Note:
Should be used by state functions, not invoked directly.
service_instance
Service instance (vim.ServiceInstance)
CLI Example:
See note above.
vsphere.erase_disk_partitions:
Erases the partitions on a disk.
The disk can be specified either by the canonical name, or by the
scsi_address.
disk_id
Canonical name of the disk.
Either “disk_id“ or “scsi_address“ needs to be specified
(“disk_id“ supersedes “scsi_address“.
scsi_address
Scsi address of the disk.
“disk_id“ or “scsi_address“ needs to be specified
(“disk_id“ supersedes “scsi_address“.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.erase_disk_partitions scsi_address=’vmhaba0:C0:T0:L0′
salt ‘*’ vsphere.erase_disk_partitions disk_id=’naa.000000000000001′
vsphere.get_advanced_configs:
Returns extra config parameters from a virtual machine advanced config list
vm_name
Virtual machine name
datacenter
Datacenter name where the virtual machine is available
service_instance
vCenter service instance for connection and configuration
vsphere.get_host_cache:
Returns the host cache configuration on the proxy host.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.get_host_cache
vsphere.get_host_datetime:
Get the date/time information for a given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to get date/time information.
If host_names is not provided, the date/time information will be retrieved for the
“host“ location instead. This is useful for when service instance connection
information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.get_host_datetime my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.get_host_datetime my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.get_ntp_config:
Get the NTP configuration information for a given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to get ntp configuration information.
If host_names is not provided, the NTP configuration will be retrieved for the
“host“ location instead. This is useful for when service instance connection
information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.get_ntp_config my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.get_ntp_config my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.get_proxy_type:
Returns the proxy type retrieved either from the pillar of from the proxy
minion’s config. Returns “<undefined>“ otherwise.
CLI Example:
salt ‘*’ vsphere.get_proxy_type
vsphere.get_service_instance_via_proxy:
Returns a service instance to the proxied endpoint (vCenter/ESXi host).
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
Note:
Should be used by state functions not invoked directly.
CLI Example:
See note above
vsphere.get_service_policy:
Get the service name’s policy for a given host or list of hosts.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
service_name
The name of the service for which to retrieve the policy. Supported service names are:
– DCUI
– TSM
– SSH
– lbtd
– lsassd
– lwiod
– netlogond
– ntpd
– sfcbd-watchdog
– snmpd
– vprobed
– vpxa
– xorg
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to get service policy information.
If host_names is not provided, the service policy information will be retrieved
for the “host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.get_service_policy my.esxi.host root bad-password ‘ssh’
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.get_service_policy my.vcenter.location root bad-password ‘ntpd’ host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.get_service_running:
Get the service name’s running state for a given host or list of hosts.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
service_name
The name of the service for which to retrieve the policy. Supported service names are:
– DCUI
– TSM
– SSH
– lbtd
– lsassd
– lwiod
– netlogond
– ntpd
– sfcbd-watchdog
– snmpd
– vprobed
– vpxa
– xorg
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to get the service’s running state.
If host_names is not provided, the service’s running state will be retrieved
for the “host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.get_service_running my.esxi.host root bad-password ‘ssh’
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.get_service_running my.vcenter.location root bad-password ‘ntpd’ host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.get_ssh_key:
Retrieve the authorized_keys entry for root.
This function only works for ESXi, not vCenter.
:param host: The location of the ESXi Host
:param username: Username to connect as
:param password: Password for the ESXi web endpoint
:param protocol: defaults to https, can be http if ssl is disabled on ESXi
:param port: defaults to 443 for https
:param certificate_verify: If true require that the SSL connection present
a valid certificate. Default: True
:return: True if upload is successful
CLI Example:
salt ‘*’ vsphere.get_ssh_key my.esxi.host root bad-password certificate_verify=True
vsphere.get_vm:
Returns vm object properties.
name
Name of the virtual machine.
datacenter
Datacenter name
vm_properties
List of vm properties.
traversal_spec
Traversal Spec object(s) for searching.
parent_ref
Container Reference object for searching under a given object.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
vsphere.get_vm_config:
Queries and converts the virtual machine properties to the available format
from the schema. If the objects attribute is True the config objects will
have extra properties, like ‘object’ which will include the
vim.vm.device.VirtualDevice, this is necessary for deletion and update
actions.
name
Name of the virtual machine
datacenter
Datacenter’s name where the virtual machine is available
objects
Indicates whether to return the vmware object properties
(eg. object, key) or just the properties which can be set
service_instance
vCenter service instance for connection and configuration
vsphere.get_vm_config_file:
Queries the virtual machine config file and returns
vim.host.DatastoreBrowser.SearchResults object on success None on failure
name
Name of the virtual machine
datacenter
Datacenter name
datastore
Datastore where the virtual machine files are stored
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
vsphere.get_vmotion_enabled:
Get the VMotion enabled status for a given host or a list of host_names. Returns “True“
if VMotion is enabled, “False“ if it is not enabled.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts to check if VMotion is enabled.
If host_names is not provided, the VMotion status will be retrieved for the
“host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.get_vmotion_enabled my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.get_vmotion_enabled my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.get_vsan_eligible_disks:
Returns a list of VSAN-eligible disks for a given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts to check if any VSAN-eligible disks are available.
If host_names is not provided, the VSAN-eligible disks will be retrieved
for the “host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.get_vsan_eligible_disks my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.get_vsan_eligible_disks my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.get_vsan_enabled:
Get the VSAN enabled status for a given host or a list of host_names. Returns “True“
if VSAN is enabled, “False“ if it is not enabled, and “None“ if a VSAN Host Config
is unset, per host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts to check if VSAN enabled.
If host_names is not provided, the VSAN status will be retrieved for the
“host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.get_vsan_enabled my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.get_vsan_enabled my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.list_assigned_licenses:
Lists the licenses assigned to an entity
entity
Dictionary representation of an entity.
See “_get_entity“ docstrings for format.
entity_display_name
Entity name used in logging
license_keys:
List of license keys to be retrieved. Default is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_assigned_licenses
entity={type:cluster,datacenter:dc,cluster:cl}
entiy_display_name=cl
vsphere.list_capability_definitions:
Returns a list of the metadata of all capabilities in the vCenter.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_capabilities
vsphere.list_cluster:
Returns a dict representation of an ESX cluster.
datacenter
Name of datacenter containing the cluster.
Ignored if already contained by proxy details.
Default value is None.
cluster
Name of cluster.
Ignored if already contained by proxy details.
Default value is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
# vcenter proxy
salt ‘*’ vsphere.list_cluster datacenter=dc1 cluster=cl1
# esxdatacenter proxy
salt ‘*’ vsphere.list_cluster cluster=cl1
# esxcluster proxy
salt ‘*’ vsphere.list_cluster
vsphere.list_clusters:
Returns a list of clusters for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_clusters 1.2.3.4 root bad-password
vsphere.list_datacenters:
Returns a list of datacenters for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_datacenters 1.2.3.4 root bad-password
vsphere.list_datacenters_via_proxy:
Returns a list of dict representations of VMware datacenters.
Connection is done via the proxy details.
Supported proxies: esxdatacenter
datacenter_names
List of datacenter names.
Default is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_datacenters_via_proxy
salt ‘*’ vsphere.list_datacenters_via_proxy dc1
salt ‘*’ vsphere.list_datacenters_via_proxy dc1,dc2
salt ‘*’ vsphere.list_datacenters_via_proxy datacenter_names=[dc1, dc2]
vsphere.list_datastore_clusters:
Returns a list of datastore clusters for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_datastore_clusters 1.2.3.4 root bad-password
vsphere.list_datastores:
Returns a list of datastores for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_datastores 1.2.3.4 root bad-password
vsphere.list_datastores_via_proxy:
Returns a list of dict representations of the datastores visible to the
proxy object. The list of datastores can be filtered by datastore names,
backing disk ids (canonical names) or backing disk scsi addresses.
Supported proxy types: esxi, esxcluster, esxdatacenter
datastore_names
List of the names of datastores to filter on
backing_disk_ids
List of canonical names of the backing disks of the datastores to filer.
Default is None.
backing_disk_scsi_addresses
List of scsi addresses of the backing disks of the datastores to filter.
Default is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_datastores_via_proxy
salt ‘*’ vsphere.list_datastores_via_proxy datastore_names=[ds1, ds2]
vsphere.list_default_storage_policy_of_datastore:
Returns a list of datastores assign the storage policies.
datastore
Name of the datastore to assign.
The datastore needs to be visible to the VMware entity the proxy
points to.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_default_storage_policy_of_datastore datastore=ds1
vsphere.list_default_vsan_policy:
Returns the default vsan storage policy.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_default_vsan_policy
vsphere.list_disk_partitions:
Lists the partitions on a disk.
The disk can be specified either by the canonical name, or by the
scsi_address.
disk_id
Canonical name of the disk.
Either “disk_id“ or “scsi_address“ needs to be specified
(“disk_id“ supersedes “scsi_address“.
scsi_address`
Scsi address of the disk.
“disk_id“ or “scsi_address“ needs to be specified
(“disk_id“ supersedes “scsi_address“.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_disk_partitions scsi_address=’vmhaba0:C0:T0:L0′
salt ‘*’ vsphere.list_disk_partitions disk_id=’naa.000000000000001′
vsphere.list_diskgroups:
Returns a list of disk group dict representation on an ESXi host.
The list of disk groups can be filtered by the cache disks
canonical names. If no filtering is applied, all disk groups are returned.
cache_disk_ids:
List of cache disk canonical names of the disk groups to be retrieved.
Default is None.
use_proxy_details
Specify whether to use the proxy minion’s details instead of the
arguments
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_diskgroups
salt ‘*’ vsphere.list_diskgroups cache_disk_ids='[naa.000000000000001]’
vsphere.list_disks:
Returns a list of dict representations of the disks in an ESXi host.
The list of disks can be filtered by disk canonical names or
scsi addresses.
disk_ids:
List of disk canonical names to be retrieved. Default is None.
scsi_addresses
List of scsi addresses of disks to be retrieved. Default is None
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_disks
salt ‘*’ vsphere.list_disks disk_ids='[naa.00, naa.001]’
salt ‘*’ vsphere.list_disks
scsi_addresses='[vmhba0:C0:T0:L0, vmhba1:C0:T0:L0]’
vsphere.list_dvportgroups:
Returns a list of distributed virtual switch portgroups.
The list can be filtered by the portgroup names or by the DVS.
dvs
Name of the DVS containing the portgroups.
Default value is None.
portgroup_names
List of portgroup names to look for. If None, all portgroups are
returned.
Default value is None
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_dvportgroups
salt ‘*’ vsphere.list_dvportgroups dvs=dvs1
salt ‘*’ vsphere.list_dvportgroups portgroup_names=[pg1]
salt ‘*’ vsphere.list_dvportgroups dvs=dvs1 portgroup_names=[pg1]
vsphere.list_dvs:
Returns a list of distributed virtual switches for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_dvs 1.2.3.4 root bad-password
vsphere.list_dvss:
Returns a list of distributed virtual switches (DVSs).
The list can be filtered by the datacenter or DVS names.
datacenter
The datacenter to look for DVSs in.
Default value is None.
dvs_names
List of DVS names to look for. If None, all DVSs are returned.
Default value is None.
CLI Example:
salt ‘*’ vsphere.list_dvss
salt ‘*’ vsphere.list_dvss dvs_names=[dvs1,dvs2]
vsphere.list_folders:
Returns a list of folders for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_folders 1.2.3.4 root bad-password
vsphere.list_hosts:
Returns a list of hosts for the specified VMware environment.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_hosts 1.2.3.4 root bad-password
vsphere.list_hosts_via_proxy:
Returns a list of hosts for the specified VMware environment. The list
of hosts can be filtered by datacenter name and/or cluster name
hostnames
Hostnames to filter on.
datacenter_name
Name of datacenter. Only hosts in this datacenter will be retrieved.
Default is None.
cluster_name
Name of cluster. Only hosts in this cluster will be retrieved. If a
datacenter is not specified the first cluster with this name will be
considerred. Default is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_hosts_via_proxy
salt ‘*’ vsphere.list_hosts_via_proxy hostnames=[esxi1.example.com]
salt ‘*’ vsphere.list_hosts_via_proxy datacenter=dc1 cluster=cluster1
vsphere.list_licenses:
Lists all licenses on a vCenter.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_licenses
vsphere.list_networks:
Returns a list of networks for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_networks 1.2.3.4 root bad-password
vsphere.list_non_ssds:
Returns a list of Non-SSD disks for the given host or list of host_names.
Note:
In the pyVmomi StorageSystem, ScsiDisks may, or may not have an “ssd“ attribute.
This attribute indicates if the ScsiDisk is SSD backed. As this option is optional,
if a relevant disk in the StorageSystem does not have “ssd = true“, it will end
up in the “non_ssds“ list here.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter the hosts for which to retrieve Non-SSD disks.
If host_names is not provided, Non-SSD disks will be retrieved for the
“host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.list_non_ssds my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.list_non_ssds my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.list_resourcepools:
Returns a list of resource pools for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_resourcepools 1.2.3.4 root bad-password
vsphere.list_ssds:
Returns a list of SSDs for the given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter the hosts for which to retrieve SSDs.
If host_names is not provided, SSDs will be retrieved for the
“host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.list_ssds my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.list_ssds my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.list_storage_policies:
Returns a list of storage policies.
policy_names
Names of policies to list. If None, all policies are listed.
Default is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_storage_policies
salt ‘*’ vsphere.list_storage_policies policy_names=[policy_name]
vsphere.list_uplink_dvportgroup:
Returns the uplink portgroup of a distributed virtual switch.
dvs
Name of the DVS containing the portgroup.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.list_uplink_dvportgroup dvs=dvs_name
vsphere.list_vapps:
Returns a list of vApps for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# List vapps from all minions
salt ‘*’ vsphere.list_vapps 1.2.3.4 root bad-password
vsphere.list_vms:
Returns a list of VMs for the specified host.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.list_vms 1.2.3.4 root bad-password
vsphere.power_off_vm:
Powers off a virtual machine specified by its name.
name
Name of the virtual machine
datacenter
Datacenter of the virtual machine
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.power_off_vm name=my_vm
vsphere.power_on_vm:
Powers on a virtual machine specified by its name.
name
Name of the virtual machine
datacenter
Datacenter of the virtual machine
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.power_on_vm name=my_vm
vsphere.register_vm:
Registers a virtual machine to the inventory with the given vmx file.
Returns comments and change list
name
Name of the virtual machine
datacenter
Datacenter of the virtual machine
placement
Placement dictionary of the virtual machine, host or cluster
vmx_path:
Full path to the vmx file, datastore name should be included
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
vsphere.remove_capacity_from_diskgroup:
Remove capacity disks from the disk group with the specified cache disk.
cache_disk_id
The canonical name of the cache disk.
capacity_disk_ids
A list containing canonical names of the capacity disks to add.
data_evacuation
Specifies whether to gracefully evacuate the data on the capacity disks
before removing them from the disk group. Default value is True.
safety_checks
Specify whether to perform safety check or to skip the checks and try
performing the required task. Default value is True.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.remove_capacity_from_diskgroup
cache_disk_id=’naa.000000000000001′
capacity_disk_ids='[naa.000000000000002, naa.000000000000003]’
vsphere.remove_datastore:
Removes a datastore. If multiple datastores an error is raised.
datastore
Datastore name
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.remove_datastore ds_name
vsphere.remove_diskgroup:
Remove the diskgroup with the specified cache disk.
cache_disk_id
The canonical name of the cache disk.
data_accessibility
Specifies whether to ensure data accessibility. Default value is True.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.remove_diskgroup cache_disk_id=’naa.000000000000001′
vsphere.remove_dvportgroup:
Removes a distributed virtual portgroup.
portgroup
Name of the portgroup to be removed.
dvs
Name of the DVS containing the portgroups.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.remove_dvportgroup portgroup=pg1 dvs=dvs1
vsphere.rename_datastore:
Renames a datastore. The datastore needs to be visible to the proxy.
datastore_name
Current datastore name.
new_datastore_name
New datastore name.
service_instance
Service instance (vim.ServiceInstance) of the vCenter/ESXi host.
Default is None.
CLI Example:
salt ‘*’ vsphere.rename_datastore old_name new_name
vsphere.service_restart:
Restart the named service for the given host or list of hosts.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
service_name
The name of the service for which to set the policy. Supported service names are:
– DCUI
– TSM
– SSH
– lbtd
– lsassd
– lwiod
– netlogond
– ntpd
– sfcbd-watchdog
– snmpd
– vprobed
– vpxa
– xorg
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to restart the service.
If host_names is not provided, the service will be restarted for the “host“
location instead. This is useful for when service instance connection information
is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.service_restart my.esxi.host root bad-password ‘ntpd’
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.service_restart my.vcenter.location root bad-password ‘ntpd’ host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.service_start:
Start the named service for the given host or list of hosts.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
service_name
The name of the service for which to set the policy. Supported service names are:
– DCUI
– TSM
– SSH
– lbtd
– lsassd
– lwiod
– netlogond
– ntpd
– sfcbd-watchdog
– snmpd
– vprobed
– vpxa
– xorg
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to start the service.
If host_names is not provided, the service will be started for the “host“
location instead. This is useful for when service instance connection information
is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.service_start my.esxi.host root bad-password ‘ntpd’
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.service_start my.vcenter.location root bad-password ‘ntpd’ host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.service_stop:
Stop the named service for the given host or list of hosts.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
service_name
The name of the service for which to set the policy. Supported service names are:
– DCUI
– TSM
– SSH
– lbtd
– lsassd
– lwiod
– netlogond
– ntpd
– sfcbd-watchdog
– snmpd
– vprobed
– vpxa
– xorg
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to stop the service.
If host_names is not provided, the service will be stopped for the “host“
location instead. This is useful for when service instance connection information
is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.service_stop my.esxi.host root bad-password ‘ssh’
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.service_stop my.vcenter.location root bad-password ‘ssh’ host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.set_advanced_configs:
Appends extra config parameters to a virtual machine advanced config list
vm_name
Virtual machine name
datacenter
Datacenter name where the virtual machine is available
advanced_configs
Dictionary with advanced parameter key value pairs
service_instance
vCenter service instance for connection and configuration
vsphere.set_ntp_config:
Set NTP configuration for a given host of list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
ntp_servers
A list of servers that should be added to and configured for the specified
host’s NTP configuration.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter which hosts to configure ntp servers.
If host_names is not provided, the NTP servers will be configured for the
“host“ location instead. This is useful for when service instance connection
information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.ntp_configure my.esxi.host root bad-password ‘[192.174.1.100, 192.174.1.200]’
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.ntp_configure my.vcenter.location root bad-password ‘[192.174.1.100, 192.174.1.200]’ host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.set_service_policy:
Set the service name’s policy for a given host or list of hosts.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
service_name
The name of the service for which to set the policy. Supported service names are:
– DCUI
– TSM
– SSH
– lbtd
– lsassd
– lwiod
– netlogond
– ntpd
– sfcbd-watchdog
– snmpd
– vprobed
– vpxa
– xorg
service_policy
The policy to set for the service. For example, ‘automatic’.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to tell
vCenter the hosts for which to set the service policy.
If host_names is not provided, the service policy information will be retrieved
for the “host“ location instead. This is useful for when service instance
connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.set_service_policy my.esxi.host root bad-password ‘ntpd’ ‘automatic’
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.set_service_policy my.vcenter.location root bad-password ‘ntpd’ ‘automatic’ host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.system_info:
Return system information about a VMware environment.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.system_info 1.2.3.4 root bad-password
vsphere.test_vcenter_connection:
Checks if a connection is to a vCenter
CLI Example:
salt ‘*’ vsphere.test_vcenter_connection
vsphere.unregister_vm:
Unregisters a virtual machine defined by name and placement
name
Name of the virtual machine
datacenter
Datacenter of the virtual machine
placement
Placement information of the virtual machine
service_instance
vCenter service instance for connection and configuration
CLI Example:
salt ‘*’ vsphere.unregister_vm name=my_vm datacenter=my_datacenter
vsphere.update_cluster:
Updates a cluster.
config_dict
Dictionary with the config values of the new cluster.
datacenter
Name of datacenter containing the cluster.
Ignored if already contained by proxy details.
Default value is None.
cluster
Name of cluster.
Ignored if already contained by proxy details.
Default value is None.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
# esxdatacenter proxy
salt ‘*’ vsphere.update_cluster cluster_dict=$cluster_dict cluster=cl1
# esxcluster proxy
salt ‘*’ vsphere.update_cluster cluster_dict=$cluster_dict
vsphere.update_dvportgroup:
Updates a distributed virtual portgroup.
portgroup_dict
Dictionary with the values the portgroup should be update with
(example in salt.states.dvs).
portgroup
Name of the portgroup to be updated.
dvs
Name of the DVS containing the portgroups.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.update_dvportgroup portgroup_dict=<dict>
portgroup=pg1
salt ‘*’ vsphere.update_dvportgroup portgroup_dict=<dict>
portgroup=pg1 dvs=dvs1
vsphere.update_dvs:
Updates a distributed virtual switch (DVS).
Note: Updating the product info, capability, uplinks of a DVS is not
supported so the corresponding entries in “dvs_dict“ will be
ignored.
dvs_dict
Dictionary with the values the DVS should be update with
(example in salt.states.dvs)
dvs
Name of the DVS to be updated.
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.update_dvs dvs_dict=$dvs_dict dvs=dvs1
vsphere.update_host_datetime:
Update the date/time on the given host or list of host_names. This function should be
used with caution since network delays and execution delays can result in time skews.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts should update their date/time.
If host_names is not provided, the date/time will be updated for the “host“
location instead. This is useful for when service instance connection
information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.update_date_time my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.update_date_time my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.update_host_password:
Update the password for a given host.
Note: Currently only works with connections to ESXi hosts. Does not work with vCenter servers.
host
The location of the ESXi host.
username
The username used to login to the ESXi host, such as “root“.
password
The password used to login to the ESXi host.
new_password
The new password that will be updated for the provided username on the ESXi host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
salt ‘*’ vsphere.update_host_password my.esxi.host root original-bad-password new-bad-password
vsphere.update_storage_policy:
Updates a storage policy.
Supported capability types: scalar, set, range.
policy
Name of the policy to update.
policy_dict
Dictionary containing the changes to apply to the policy.
(example in salt.states.pbm)
service_instance
Service instance (vim.ServiceInstance) of the vCenter.
Default is None.
CLI Example:
salt ‘*’ vsphere.update_storage_policy policy=’policy name’
policy_dict=”$policy_dict”
vsphere.update_vm:
Updates the configuration of the virtual machine if the config differs
vm_name
Virtual Machine name to be updated
cpu
CPU configuration options
memory
Memory configuration options
version
Virtual machine container hardware version
image
Virtual machine guest OS version identifier
VirtualMachineGuestOsIdentifier
interfaces
Network interfaces configuration options
disks
Disks configuration options
scsi_devices
SCSI devices configuration options
serial_ports
Serial ports configuration options
datacenter
Datacenter where the virtual machine is available
datastore
Datastore where the virtual machine config files are available
cd_dvd_drives
CD/DVD drives configuration options
advanced_config
Advanced config parameters to be set for the virtual machine
service_instance
vCenter service instance for connection and configuration
vsphere.upload_ssh_key:
Upload an ssh key for root to an ESXi host via http PUT.
This function only works for ESXi, not vCenter.
Only one ssh key can be uploaded for root. Uploading a second key will
replace any existing key.
:param host: The location of the ESXi Host
:param username: Username to connect as
:param password: Password for the ESXi web endpoint
:param ssh_key: Public SSH key, will be added to authorized_keys on ESXi
:param ssh_key_file: File containing the SSH key. Use ‘ssh_key’ or
ssh_key_file, but not both.
:param protocol: defaults to https, can be http if ssl is disabled on ESXi
:param port: defaults to 443 for https
:param certificate_verify: If true require that the SSL connection present
a valid certificate. Default: True
:return: Dictionary with a ‘status’ key, True if upload is successful.
If upload is unsuccessful, ‘status’ key will be False and
an ‘Error’ key will have an informative message.
CLI Example:
salt ‘*’ vsphere.upload_ssh_key my.esxi.host root bad-password ssh_key_file=’/etc/salt/my_keys/my_key.pub’
vsphere.vmotion_disable:
Disable vMotion for a given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts should disable VMotion.
If host_names is not provided, VMotion will be disabled for the “host“
location instead. This is useful for when service instance connection
information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.vmotion_disable my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.vmotion_disable my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.vmotion_enable:
Enable vMotion for a given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts should enable VMotion.
If host_names is not provided, VMotion will be enabled for the “host“
location instead. This is useful for when service instance connection
information is used for a single ESXi host.
device
The device that uniquely identifies the VirtualNic that will be used for
VMotion for each host. Defaults to “vmk0“.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.vmotion_enable my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.vmotion_enable my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.vsan_add_disks:
Add any VSAN-eligible disks to the VSAN System for the given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts need to add any VSAN-eligible disks to the host’s
VSAN system.
If host_names is not provided, VSAN-eligible disks will be added to the hosts’s
VSAN system for the “host“ location instead. This is useful for when service
instance connection information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.vsan_add_disks my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.vsan_add_disks my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.vsan_disable:
Disable VSAN for a given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts should disable VSAN.
If host_names is not provided, VSAN will be disabled for the “host“
location instead. This is useful for when service instance connection
information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.vsan_disable my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.vsan_disable my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’
vsphere.vsan_enable:
Enable VSAN for a given host or list of host_names.
host
The location of the host.
username
The username used to login to the host, such as “root“.
password
The password used to login to the host.
protocol
Optionally set to alternate protocol if the host is not using the default
protocol. Default protocol is “https“.
port
Optionally set to alternate port if the host is not using the default
port. Default port is “443“.
host_names
List of ESXi host names. When the host, username, and password credentials
are provided for a vCenter Server, the host_names argument is required to
tell vCenter which hosts should enable VSAN.
If host_names is not provided, VSAN will be enabled for the “host“
location instead. This is useful for when service instance connection
information is used for a single ESXi host.
verify_ssl
Verify the SSL certificate. Default: True
CLI Example:
# Used for single ESXi host connection information
salt ‘*’ vsphere.vsan_enable my.esxi.host root bad-password
# Used for connecting to a vCenter Server
salt ‘*’ vsphere.vsan_enable my.vcenter.location root bad-password host_names='[esxi-1.host.com, esxi-2.host.com]’