ansible.windows.win_reboot (2.3.0) — module

Reboot a windows machine

Authors: Matt Davis (@nitzmahone)

This plugin has a corresponding action plugin.

Install collection

Install with ansible-galaxy collection install ansible.windows:==2.3.0


Add to requirements.yml

  collections:
    - name: ansible.windows
      version: 2.3.0

Description

Unconditionally reboot a Windows machine, wait for it to go down, come back up, and respond to commands.

For non-Windows targets, use the M(ansible.builtin.reboot) module instead.

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Reboot the machine with all defaults
  ansible.windows.win_reboot:
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Reboot a slow machine that might have lots of updates to apply
  ansible.windows.win_reboot:
    reboot_timeout: 3600
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Install a Windows feature and reboot if necessary
- name: Install IIS Web-Server
  ansible.windows.win_feature:
    name: Web-Server
  register: iis_install
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Reboot when Web-Server feature requires it
  ansible.windows.win_reboot:
  when: iis_install.reboot_required
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# One way to ensure the system is reliable, is to set WinRM to a delayed startup
- name: Ensure WinRM starts when the system has settled and is ready to work reliably
  ansible.windows.win_service:
    name: WinRM
    start_mode: delayed
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Additionally, you can add a delay before running the next task
- name: Reboot a machine that takes time to settle after being booted
  ansible.windows.win_reboot:
    post_reboot_delay: 120
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Or you can make win_reboot validate exactly what you need to work before running the next task
- name: Validate that the netlogon service has started, before running the next task
  ansible.windows.win_reboot:
    test_command: 'exit (Get-Service -Name Netlogon).Status -ne "Running"'

Inputs

    
msg:
    default: Reboot initiated by Ansible
    description:
    - Message to display to users.
    type: str

test_command:
    description:
    - Command to expect success for to determine the machine is ready for management.
    - By default this test command is a custom one to detect when the Windows Logon screen
      is up and ready to accept credentials. Using a custom command will replace this
      behaviour and just run the command specified.
    type: str

reboot_timeout:
    aliases:
    - reboot_timeout_sec
    default: 600
    description:
    - Maximum seconds to wait for machine to re-appear on the network and respond to a
      test command.
    - This timeout is evaluated separately for both reboot verification and test command
      success so maximum clock time is actually twice this value.
    type: float

connect_timeout:
    aliases:
    - connect_timeout_sec
    default: 5
    description:
    - Maximum seconds to wait for a single successful TCP connection to the WinRM endpoint
      before trying again.
    type: float

pre_reboot_delay:
    aliases:
    - pre_reboot_delay_sec
    default: 2
    description:
    - Seconds to wait before reboot. Passed as a parameter to the reboot command.
    - The minimum version is C(2) seconds and cannot be set lower.
    type: float

boot_time_command:
    default: (Get-CimInstance -ClassName Win32_OperatingSystem -Property LastBootUpTime).LastBootUpTime.ToFileTime()
    description:
    - Command to run that returns a unique string indicating the last time the system
      was booted.
    - Setting this to a command that has different output each time it is run will cause
      the task to fail.
    type: str

post_reboot_delay:
    aliases:
    - post_reboot_delay_sec
    default: 0
    description:
    - Seconds to wait after the reboot command was successful before attempting to validate
      the system rebooted successfully.
    - This is useful if you want wait for something to settle despite your connection
      already working.
    type: float

Outputs

elapsed:
  description: The number of seconds that elapsed waiting for the system to be rebooted.
  returned: always
  sample: 23.2
  type: float
rebooted:
  description: True if the machine was rebooted.
  returned: always
  sample: true
  type: bool

See also