vmware.vmware.vm_powerstate module – Manages power states of virtual machines in vCenter

Note

This module is part of the vmware.vmware collection (version 1.11.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install vmware.vmware.

To use it in a playbook, specify: vmware.vmware.vm_powerstate.

Synopsis

  • Manages power states of virtual machines in vCenter, e.g., Power on / Power off / Restart.

Parameters

Parameter

Comments

datacenter

string / required

The datacenter where the VM you’d like to operate the power.

folder

string

Destination folder, absolute or relative path to find an existing guest.

Should be the full folder path, with or without the ‘datacenter/vm/’ prefix

For example ‘datacenter_name/vm/path/to/folder’ or ‘path/to/folder’

force

boolean

Ignore warnings and complete the actions.

This parameter is useful while forcing virtual machine state.

Choices:

  • false ← (default)

  • true

hostname

string

The hostname or IP address of the vSphere vCenter server.

If the value is not specified in the task, the value of environment variable VMWARE_HOST will be used instead.

moid

string

Managed Object ID of the instance to manage if known, this is a unique identifier only within a single vCenter instance.

This is required if name or uuid is not supplied.

name

string

Name of the virtual machine to work with.

Virtual machine names in vCenter are not necessarily unique, which may be problematic, see name_match.

This is required if moid or uuid is not supplied.

name_match

string

If multiple virtual machines matching the name, use the first or last found.

Choices:

  • "first" ← (default)

  • "last"

password

aliases: pass, pwd

string

The password of the vSphere vCenter server.

If the value is not specified in the task, the value of environment variable VMWARE_PASSWORD will be used instead.

port

integer

The port number of the vSphere vCenter server.

If the value is not specified in the task, the value of environment variable VMWARE_PORT will be used instead.

Default: 443

proxy_host

string

The address of a proxy that will receive all HTTPS requests and relay them.

The format is a hostname or a IP.

If the value is not specified in the task, the value of environment variable VMWARE_PROXY_HOST will be used instead.

proxy_port

integer

The port of the HTTP proxy that will receive all HTTPS requests and relay them.

If the value is not specified in the task, the value of environment variable VMWARE_PROXY_PORT will be used instead.

question_answers

list / elements=dictionary

A list of questions to answer, should one or more arise while waiting for the task to complete.

Some common uses are to allow a cdrom to be changed even if locked, or to answer the question as to whether a VM was copied or moved.

Can be used if state is powered-on.

question

string / required

The message id, for example msg.uuid.altered.

response

string / required

The choice key, for example button.uuid.copiedTheVM.

scheduled_at

string

Date and time in string format at which specified task needs to be performed.

The required format for date and time - ‘dd/mm/yyyy hh:mm’.

Scheduling task requires vCenter server. A standalone ESXi server does not support this option.

scheduled_task_description

string

Description of scheduled task.

Valid only if scheduled_at is specified.

scheduled_task_enabled

boolean

Flag to indicate whether the scheduled task is enabled or disabled.

Choices:

  • false

  • true ← (default)

scheduled_task_name

string

Name of scheduled task.

Valid only if scheduled_at is specified.

state

string

Set the state of the virtual machine.

Choices:

  • "powered-off"

  • "powered-on" ← (default)

  • "reboot-guest"

  • "restarted"

  • "shutdown-guest"

  • "suspended"

timeout

integer

If this argument is set to a positive integer, the module will wait for the VM to reach the poweredoff state.

The value sets a timeout in seconds for the module to wait for the state change.

Can not be used if state is shutdown-guest or reboot-guest.

Default: 3600

use_instance_uuid

boolean

Whether to use the VMware instance UUID rather than the BIOS UUID.

Choices:

  • false ← (default)

  • true

username

aliases: admin, user

string

The username of the vSphere vCenter server.

If the value is not specified in the task, the value of environment variable VMWARE_USER will be used instead.

uuid

string

UUID of the instance to manage if known, this is VMware’s unique identifier.

This is required if name or moid is not supplied.

validate_certs

boolean

Allows connection when SSL certificates are not valid. Set to false when certificates are not trusted.

If the value is not specified in the task, the value of environment variable VMWARE_VALIDATE_CERTS will be used instead.

Choices:

  • false

  • true ← (default)

Notes

Note

  • All modules require API write access and hence are not supported on a free ESXi license.

  • All variables and VMware object names are case sensitive.

  • Modules may rely on the ‘requests’ python library, which does not use the system certificate store by default. You can specify the certificate store by setting the REQUESTS_CA_BUNDLE environment variable. Example: ‘export REQUESTS_CA_BUNDLE=/path/to/your/ca_bundle.pem’

Examples

- name: Set the state of a virtual machine to poweroff
  vmware.vmware.vm_powerstate:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ vm_datacenter }}"
    folder: "/{{ datacenter_name }}/vm/my_folder"
    name: "{{ guest_name }}"
    state: powered-off
  register: deploy

- name: Set the state of a virtual machine to poweron using MoID
  vmware.vmware.vm_powerstate:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ vm_datacenter }}"
    folder: "/{{ datacenter_name }}/vm/my_folder"
    moid: vm-42
    state: powered-on
  register: deploy

- name: Set the state of a virtual machine to poweroff at given scheduled time
  vmware.vmware.vm_powerstate:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ vm_datacenter }}"
    folder: "/{{ datacenter_name }}/vm/my_folder"
    name: "{{ guest_name }}"
    state: powered-off
    scheduled_at: "09/01/2018 10:18"
    scheduled_task_name: "task_00001"
    scheduled_task_description: "Sample task to poweroff VM"
    scheduled_task_enabled: true
  register: deploy_at_scheduled_datetime

- name: Wait for the virtual machine to shutdown
  vmware.vmware.vm_powerstate:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ vm_datacenter }}"
    name: "{{ guest_name }}"
    state: shutdown-guest
  register: deploy

- name: Automatically answer if a question locked a virtual machine
  block:
    - name: Power on a virtual machine without the answer param
      vmware.vmware.vm_powerstate:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        datacenter: "{{ vm_datacenter }}"
        validate_certs: false
        folder: "{{ f1 }}"
        name: "{{ vm_name }}"
        state: powered-on
  rescue:
    - name: Power on a virtual machine with the answer param
      vmware.vmware.vm_powerstate:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        datacenter: "{{ vm_datacenter }}"
        validate_certs: false
        folder: "{{ f1 }}"
        name: "{{ vm_name }}"
        question_answers:
          - question: "msg.uuid.altered"
            response: "button.uuid.copiedTheVM"
        state: powered-on

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

vm

dictionary

Information about the target VM

Returned: On success

Sample: {"moid": "vm-79828,", "name": "test-d9c1-vm"}

Authors

  • Ansible Cloud Team (@ansible-collections)