The following plugin provides functionality available through Pipeline-compatible steps. Read more about how to integrate steps into your Pipeline in the Steps section of the Pipeline Syntax page.
For a list of other such plugins, see the Pipeline Steps Reference page.
step([$class: 'DeleteSnapshot']): Delete a Snapshotstep([$class: 'Deploy']): Deploy VM from templatestep([$class: 'ExposeGuestInfo']): Expose Guest Infostep([$class: 'PowerOff']): Power-Off VMstep([$class: 'Reconfigure']): Reconfigure VMstep([$class: 'Rename']): Rename VMstep([$class: 'RenameSnapshot']): Rename Snapshotstep([$class: 'RevertToSnapshot']): Revert to Snapshotstep([$class: 'SuspendVm']): Suspend VMstep([$class: 'TakeSnapshot']): Take Snapshotstep([$class: 'VSphereBuildStepContainer']): vSphere Build StepvSphere: Invoke an vSphere action, exposing the VM IP under some actionsstep([$class: 'DeleteSnapshot']): Delete a Snapshotvm : String
snapshotName : String
consolidate : boolean
failOnNoExist : boolean
step([$class: 'Deploy']): Deploy VM from templatetemplate : String
clone : String
linkedClone : boolean
resourcePool : String
cluster : String
datastore : String
folder : String
customizationSpec : String
timeoutInSeconds : int
powerOn : boolean
host : String (optional)
When set, this always wins over "Host Selection Mode" below, which is then ignored. Leave blank to use vCenter's own default placement (unchanged legacy behaviour), or to let "Host Selection Mode" choose automatically.
Works on any vSphere edition/license, and with any permission setup - including a service account that can only write to a single host. This is usually the right choice for small/test labs, or whenever you want full manual control over where clones land.
Example: esx-rack3-host07.example.comhostSelectionCandidates : Array / List of String (optional)
hostSelectionCandidatesAsString : String (optional)
In a pipeline or Configuration-as-Code YAML, you can use this same comma-separated string form under the name hostSelectionCandidatesAsString, or instead give a native list of individual host names under hostSelectionCandidates, e.g. hostSelectionCandidates: ['esx01.example.com', 'esx02.example.com'] - whichever is more convenient. Both end up stored the same way; use only one of the two per template/step.
Not every host visible in a cluster is necessarily usable by the vCenter account running this connection - a vCenter admin may restrict provisioning permission to a subset of hosts. This field is the only mechanism this plugin offers to keep automatic selection within permitted hosts.
This is not verified live against actual vCenter permissions: an incorrect entry, or a host the account cannot actually write to, only surfaces as a vCenter-side error when a clone is attempted, not as a validation error here.
Leaving this blank inherits the cloud's own default candidate list (configured on the vSphere Cloud itself), if any; if the cloud has no default either, every (usable) host in the configured cluster is a candidate. To explicitly override the cloud's default to "no restriction" for this call site specifically - rather than inheriting whatever the cloud has configured - enter a single comma (,): this is not blank, so it is treated as a deliberate override, but it still parses to zero host names.
hostSelectionMode : String (optional)
Which mode fits best depends on your VMware license/edition and local preference, not just mechanics:
Either automatic mode needs a cluster to search: if "Cluster" above is left blank, this plugin will use the only cluster in the vCenter's inventory if there is exactly one: otherwise (no clusters, or more than one) it logs a message and falls back to letting vCenter decide, exactly as if this field had been left blank.
step([$class: 'ExposeGuestInfo']): Expose Guest Infovm : String
envVariablePrefix : String
waitForIp4 : boolean
step([$class: 'PowerOff']): Power-Off VMvm : String
evenIfSuspended : boolean
shutdownGracefully : boolean
ignoreIfNotExists : boolean
gracefulShutdownTimeout : int (optional)
step([$class: 'Reconfigure']): Reconfigure VMvm : String
reconfigureSteps
$class: 'ReconfigureAnnotation'annotation : String (optional)
append : boolean (optional)
$class: 'ReconfigureCpu'cpuCores : String
coresPerSocket : String
$class: 'ReconfigureDisk'diskSize : String
datastore : String
$class: 'ReconfigureMemory'memorySize : String
$class: 'ReconfigureNetworkAdapters'deviceAction
ADD, EDIT, REMOVEdeviceLabel : String
macAddress : String
standardSwitch : boolean
portGroup : String
distributedSwitch : boolean
distributedPortGroup : String
distributedPortId : String
step([$class: 'Rename']): Rename VMoldName : String
newName : String
step([$class: 'RenameSnapshot']): Rename Snapshotvm : String
oldName : String
newName : String
newDescription : String
step([$class: 'RevertToSnapshot']): Revert to Snapshotvm : String
snapshotName : String
suppressPowerOn : boolean (optional)
step([$class: 'TakeSnapshot']): Take Snapshotvm : String
snapshotName : String
description : String
includeMemory : boolean
step([$class: 'VSphereBuildStepContainer']): vSphere Build StepbuildStep
$class: 'Clone'sourceName : String
clone : String
linkedClone : boolean
resourcePool : String
cluster : String
datastore : String
folder : String
powerOn : boolean
timeoutInSeconds : int
customizationSpec : String
useCurrentSnapshot : boolean
namedSnapshot : String
extraConfigParameters
java.util.Map<java.lang.String, java.lang.String>host : String (optional)
When set, this always wins over "Host Selection Mode" below, which is then ignored. Leave blank to use vCenter's own default placement (unchanged legacy behaviour), or to let "Host Selection Mode" choose automatically.
Works on any vSphere edition/license, and with any permission setup - including a service account that can only write to a single host. This is usually the right choice for small/test labs, or whenever you want full manual control over where clones land.
Example: esx-rack3-host07.example.comhostSelectionCandidates : Array / List of String (optional)
hostSelectionCandidatesAsString : String (optional)
In a pipeline or Configuration-as-Code YAML, you can use this same comma-separated string form under the name hostSelectionCandidatesAsString, or instead give a native list of individual host names under hostSelectionCandidates, e.g. hostSelectionCandidates: ['esx01.example.com', 'esx02.example.com'] - whichever is more convenient. Both end up stored the same way; use only one of the two per template/step.
Not every host visible in a cluster is necessarily usable by the vCenter account running this connection - a vCenter admin may restrict provisioning permission to a subset of hosts. This field is the only mechanism this plugin offers to keep automatic selection within permitted hosts.
This is not verified live against actual vCenter permissions: an incorrect entry, or a host the account cannot actually write to, only surfaces as a vCenter-side error when a clone is attempted, not as a validation error here.
Leaving this blank inherits the cloud's own default candidate list (configured on the vSphere Cloud itself), if any; if the cloud has no default either, every (usable) host in the configured cluster is a candidate. To explicitly override the cloud's default to "no restriction" for this call site specifically - rather than inheriting whatever the cloud has configured - enter a single comma (,): this is not blank, so it is treated as a deliberate override, but it still parses to zero host names.
hostSelectionMode : String (optional)
Which mode fits best depends on your VMware license/edition and local preference, not just mechanics:
Either automatic mode needs a cluster to search: if "Cluster" above is left blank, this plugin will use the only cluster in the vCenter's inventory if there is exactly one: otherwise (no clusters, or more than one) it logs a message and falls back to letting vCenter decide, exactly as if this field had been left blank.
$class: 'ConvertToTemplate'vm : String
force : boolean
$class: 'ConvertToVm'template : String
resourcePool : String
cluster : String
$class: 'Delete'vm : String
failOnNoExist : boolean
$class: 'DeleteSnapshot'vm : String
snapshotName : String
consolidate : boolean
failOnNoExist : boolean
$class: 'Deploy'template : String
clone : String
linkedClone : boolean
resourcePool : String
cluster : String
datastore : String
folder : String
customizationSpec : String
timeoutInSeconds : int
powerOn : boolean
host : String (optional)
When set, this always wins over "Host Selection Mode" below, which is then ignored. Leave blank to use vCenter's own default placement (unchanged legacy behaviour), or to let "Host Selection Mode" choose automatically.
Works on any vSphere edition/license, and with any permission setup - including a service account that can only write to a single host. This is usually the right choice for small/test labs, or whenever you want full manual control over where clones land.
Example: esx-rack3-host07.example.comhostSelectionCandidates : Array / List of String (optional)
hostSelectionCandidatesAsString : String (optional)
In a pipeline or Configuration-as-Code YAML, you can use this same comma-separated string form under the name hostSelectionCandidatesAsString, or instead give a native list of individual host names under hostSelectionCandidates, e.g. hostSelectionCandidates: ['esx01.example.com', 'esx02.example.com'] - whichever is more convenient. Both end up stored the same way; use only one of the two per template/step.
Not every host visible in a cluster is necessarily usable by the vCenter account running this connection - a vCenter admin may restrict provisioning permission to a subset of hosts. This field is the only mechanism this plugin offers to keep automatic selection within permitted hosts.
This is not verified live against actual vCenter permissions: an incorrect entry, or a host the account cannot actually write to, only surfaces as a vCenter-side error when a clone is attempted, not as a validation error here.
Leaving this blank inherits the cloud's own default candidate list (configured on the vSphere Cloud itself), if any; if the cloud has no default either, every (usable) host in the configured cluster is a candidate. To explicitly override the cloud's default to "no restriction" for this call site specifically - rather than inheriting whatever the cloud has configured - enter a single comma (,): this is not blank, so it is treated as a deliberate override, but it still parses to zero host names.
hostSelectionMode : String (optional)
Which mode fits best depends on your VMware license/edition and local preference, not just mechanics:
Either automatic mode needs a cluster to search: if "Cluster" above is left blank, this plugin will use the only cluster in the vCenter's inventory if there is exactly one: otherwise (no clusters, or more than one) it logs a message and falls back to letting vCenter decide, exactly as if this field had been left blank.
$class: 'ExposeGuestInfo'vm : String
envVariablePrefix : String
waitForIp4 : boolean
$class: 'PowerOff'vm : String
evenIfSuspended : boolean
shutdownGracefully : boolean
ignoreIfNotExists : boolean
gracefulShutdownTimeout : int (optional)
$class: 'PowerOn'vm : String
timeoutInSeconds : int
$class: 'Reconfigure'vm : String
reconfigureSteps
$class: 'ReconfigureAnnotation'annotation : String (optional)
append : boolean (optional)
$class: 'ReconfigureCpu'cpuCores : String
coresPerSocket : String
$class: 'ReconfigureDisk'diskSize : String
datastore : String
$class: 'ReconfigureMemory'memorySize : String
$class: 'ReconfigureNetworkAdapters'deviceAction
ADD, EDIT, REMOVEdeviceLabel : String
macAddress : String
standardSwitch : boolean
portGroup : String
distributedSwitch : boolean
distributedPortGroup : String
distributedPortId : String
$class: 'Rename'oldName : String
newName : String
$class: 'RenameSnapshot'vm : String
oldName : String
newName : String
newDescription : String
$class: 'RevertToSnapshot'vm : String
snapshotName : String
suppressPowerOn : boolean (optional)
$class: 'SuspendVm'vm : String
$class: 'TakeSnapshot'vm : String
snapshotName : String
description : String
includeMemory : boolean
serverName : String
vSphere: Invoke an vSphere action, exposing the VM IP under some actionsbuildStep (optional)
$class: 'Clone'sourceName : String
clone : String
linkedClone : boolean
resourcePool : String
cluster : String
datastore : String
folder : String
powerOn : boolean
timeoutInSeconds : int
customizationSpec : String
useCurrentSnapshot : boolean
namedSnapshot : String
extraConfigParameters
java.util.Map<java.lang.String, java.lang.String>host : String (optional)
When set, this always wins over "Host Selection Mode" below, which is then ignored. Leave blank to use vCenter's own default placement (unchanged legacy behaviour), or to let "Host Selection Mode" choose automatically.
Works on any vSphere edition/license, and with any permission setup - including a service account that can only write to a single host. This is usually the right choice for small/test labs, or whenever you want full manual control over where clones land.
Example: esx-rack3-host07.example.comhostSelectionCandidates : Array / List of String (optional)
hostSelectionCandidatesAsString : String (optional)
In a pipeline or Configuration-as-Code YAML, you can use this same comma-separated string form under the name hostSelectionCandidatesAsString, or instead give a native list of individual host names under hostSelectionCandidates, e.g. hostSelectionCandidates: ['esx01.example.com', 'esx02.example.com'] - whichever is more convenient. Both end up stored the same way; use only one of the two per template/step.
Not every host visible in a cluster is necessarily usable by the vCenter account running this connection - a vCenter admin may restrict provisioning permission to a subset of hosts. This field is the only mechanism this plugin offers to keep automatic selection within permitted hosts.
This is not verified live against actual vCenter permissions: an incorrect entry, or a host the account cannot actually write to, only surfaces as a vCenter-side error when a clone is attempted, not as a validation error here.
Leaving this blank inherits the cloud's own default candidate list (configured on the vSphere Cloud itself), if any; if the cloud has no default either, every (usable) host in the configured cluster is a candidate. To explicitly override the cloud's default to "no restriction" for this call site specifically - rather than inheriting whatever the cloud has configured - enter a single comma (,): this is not blank, so it is treated as a deliberate override, but it still parses to zero host names.
hostSelectionMode : String (optional)
Which mode fits best depends on your VMware license/edition and local preference, not just mechanics:
Either automatic mode needs a cluster to search: if "Cluster" above is left blank, this plugin will use the only cluster in the vCenter's inventory if there is exactly one: otherwise (no clusters, or more than one) it logs a message and falls back to letting vCenter decide, exactly as if this field had been left blank.
$class: 'ConvertToTemplate'vm : String
force : boolean
$class: 'ConvertToVm'template : String
resourcePool : String
cluster : String
$class: 'Delete'vm : String
failOnNoExist : boolean
$class: 'DeleteSnapshot'vm : String
snapshotName : String
consolidate : boolean
failOnNoExist : boolean
$class: 'Deploy'template : String
clone : String
linkedClone : boolean
resourcePool : String
cluster : String
datastore : String
folder : String
customizationSpec : String
timeoutInSeconds : int
powerOn : boolean
host : String (optional)
When set, this always wins over "Host Selection Mode" below, which is then ignored. Leave blank to use vCenter's own default placement (unchanged legacy behaviour), or to let "Host Selection Mode" choose automatically.
Works on any vSphere edition/license, and with any permission setup - including a service account that can only write to a single host. This is usually the right choice for small/test labs, or whenever you want full manual control over where clones land.
Example: esx-rack3-host07.example.comhostSelectionCandidates : Array / List of String (optional)
hostSelectionCandidatesAsString : String (optional)
In a pipeline or Configuration-as-Code YAML, you can use this same comma-separated string form under the name hostSelectionCandidatesAsString, or instead give a native list of individual host names under hostSelectionCandidates, e.g. hostSelectionCandidates: ['esx01.example.com', 'esx02.example.com'] - whichever is more convenient. Both end up stored the same way; use only one of the two per template/step.
Not every host visible in a cluster is necessarily usable by the vCenter account running this connection - a vCenter admin may restrict provisioning permission to a subset of hosts. This field is the only mechanism this plugin offers to keep automatic selection within permitted hosts.
This is not verified live against actual vCenter permissions: an incorrect entry, or a host the account cannot actually write to, only surfaces as a vCenter-side error when a clone is attempted, not as a validation error here.
Leaving this blank inherits the cloud's own default candidate list (configured on the vSphere Cloud itself), if any; if the cloud has no default either, every (usable) host in the configured cluster is a candidate. To explicitly override the cloud's default to "no restriction" for this call site specifically - rather than inheriting whatever the cloud has configured - enter a single comma (,): this is not blank, so it is treated as a deliberate override, but it still parses to zero host names.
hostSelectionMode : String (optional)
Which mode fits best depends on your VMware license/edition and local preference, not just mechanics:
Either automatic mode needs a cluster to search: if "Cluster" above is left blank, this plugin will use the only cluster in the vCenter's inventory if there is exactly one: otherwise (no clusters, or more than one) it logs a message and falls back to letting vCenter decide, exactly as if this field had been left blank.
$class: 'ExposeGuestInfo'vm : String
envVariablePrefix : String
waitForIp4 : boolean
$class: 'PowerOff'vm : String
evenIfSuspended : boolean
shutdownGracefully : boolean
ignoreIfNotExists : boolean
gracefulShutdownTimeout : int (optional)
$class: 'PowerOn'vm : String
timeoutInSeconds : int
$class: 'Reconfigure'vm : String
reconfigureSteps
$class: 'ReconfigureAnnotation'annotation : String (optional)
append : boolean (optional)
$class: 'ReconfigureCpu'cpuCores : String
coresPerSocket : String
$class: 'ReconfigureDisk'diskSize : String
datastore : String
$class: 'ReconfigureMemory'memorySize : String
$class: 'ReconfigureNetworkAdapters'deviceAction
ADD, EDIT, REMOVEdeviceLabel : String
macAddress : String
standardSwitch : boolean
portGroup : String
distributedSwitch : boolean
distributedPortGroup : String
distributedPortId : String
$class: 'Rename'oldName : String
newName : String
$class: 'RenameSnapshot'vm : String
oldName : String
newName : String
newDescription : String
$class: 'RevertToSnapshot'vm : String
snapshotName : String
suppressPowerOn : boolean (optional)
$class: 'SuspendVm'vm : String
$class: 'TakeSnapshot'vm : String
snapshotName : String
description : String
includeMemory : boolean
serverName : String (optional)
Please submit your feedback about this page through this quick form.
Alternatively, if you don't wish to complete the quick form, you can simply indicate if you found this page helpful?
See existing feedback here.