Skip to content

Instantly share code, notes, and snippets.

@infernix
Created May 10, 2014 16:55
Show Gist options
  • Save infernix/a968f23c4f4e1d6723e4 to your computer and use it in GitHub Desktop.
Save infernix/a968f23c4f4e1d6723e4 to your computer and use it in GitHub Desktop.
Make Ansible reboot remote hosts and wait for them to return
---
- name: Reboot a host and wait for it to return
hosts: somehost
remote_user: root
tasks:
# Send the reboot command
- shell: shutdown -r now
# This pause is mandatory, otherwise the existing control connection gets reused!
- pause: seconds=30
# Now we will run a local 'ansible -m ping' on this host until it returns.
# This works with the existing ansible hosts inventory and so any custom ansible_ssh_hosts definitions are being used
- local_action: shell ansible -u {{ ansible_user_id }} -m ping {{ inventory_hostname }}
register: result
until: result.rc == 0
retries: 30
delay: 10
# And finally, execute 'uptime' when the host is back.
- shell: uptime
@diamondo25
Copy link

I am running ansible version 2.9.6 and the above playbook yaml is giving errors - probably because of the version. I am trying to do a reboot of multiple servers. I've read documentation but am still getting errors on the syntax:

* name: Reboot servers

* hosts: all

* remote_user: root
  tasks:

* shell: /sbin/reboot

Running a --check is giving me a syntax error on the line tasks. It is hard to tell whether every line needs a - in front or whether I have this in the wrong order. I am going into this completely blinding and haven't used ansible before. Thanks for any help.

Please use a code block to show your code, because indentation matters and it got removed by github

@rstorch01
Copy link

Sorry the * should be a hyphen and I have one space between the hyphen and the name. I also have one space between the colon and the description. I will google how to use a code block meanwhile.

@infernix
Copy link
Author

This code is outdated; see comments for better options, most notablly https://docs.ansible.com/ansible/latest/collections/ansible/builtin/reboot_module.html

@rstorch01
Copy link

Thanks, yes I did see that. Based on that, I tried:


- hosts: all
- name: rebooting servers
reboot:

And I get this:

ERROR! Syntax Error while loading YAML.
did not find expected '-' indicator

The offending line appears to be:

  • name: rebooting servers
    reboot:
    ^ here

I apologize in advance if my block code above doesn't work

@click0
Copy link

click0 commented Aug 26, 2021

tasks:
  - name: Reboot the server
    reboot:

  - pause:
      prompt: "Need delay for restart"
      seconds: 30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment