Reboot

Hi,

Using Ansible 1.3, the following worked:

  • name: reboot after bonding the interfaces
    shell: sleep 2s && /sbin/reboot &

  • name: wait for the server to go down (reboot)
    local_action: wait_for host={{ inventory_hostname }} port=22 state=stopped

  • name: wait for the server to come up
    local_action: wait_for host={{ inventory_hostname }} port=22 delay=30

Using Ansible 1.4, I get the following:

TASK: [2_aggregated_links | reboot after bonding the interfaces] **************
changed: [hmaster02]
changed: [hslave02]
changed: [hslave01]
changed: [hmaster01]
changed: [hslave03]
changed: [hslave06]
changed: [hslave05]
changed: [hslave04]

TASK: [2_aggregated_links | wait for the server to go down (reboot)] **********
failed: [hmaster02] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=tefdvlddkmvonwuegpwdjbzabsvrxcml] password:

failed: [hmaster01] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=jussicehycjmhqzjbacrslyklbzhtduh] password:

failed: [hslave01] => {“failed”: true, “item”: “”, “parsed”: false}
failed: [hslave03] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=iuolakaoetpwrtjecgltrkoddrvubtoe] password:

invalid output was: [sudo via ansible, key=vyctfmxdrtgxiokmhxjnnritjltppzwb] password:

failed: [hslave02] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=jkjvdcurogwhljtamwlnknknvemivzsf] password:

failed: [hslave06] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=nnywazrfrszhxbdtvqyxdcppgwvzufwt] password:

failed: [hslave04] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=erxobssvkstyefvsdkkbwooyiglhkpgv] password:

failed: [hslave05] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=kxtdwcxkcxiexcheiksgqnlodcntcjmu] password:

What should I change in my playbook?

Thanks,

Mathias

It's not immediately obvious to me what error you are pointing out. Run ansible-playbook with -vvvv and show us that output.

Here’s my debug output for local_action: wait_for host={{ inventory_hostname }} port=22 state=stopped :

TASK: [2_aggregated_links | wait for the server to go down (reboot)] **********
<127.0.0.1> EXEC [‘/bin/sh’, ‘-c’, ‘mkdir -p $HOME/.ansible/tmp/ansible-1385501543.62-188179043733979 && chmod a+rx $HOME/.ansible/tmp/ansible-1385501543.62-188179043733979 && echo $HOME/.ansible/tmp/ansible-1385501543.62-188179043733979’]

<127.0.0.1> REMOTE_MODULE wait_for host=hslave02 port=22 state=stopped

<127.0.0.1> PUT /tmp/tmpBfFpk0 TO /home/mathias/.ansible/tmp/ansible-1385501543.62-188179043733979/wait_for
<127.0.0.1> EXEC /bin/sh -c ‘sudo -k && sudo -H -S -p “[sudo via ansible, key=zmxhtofymhnomrenapokmumehaihldle] password: " -u root /bin/sh -c '”’“‘echo SUDO-SUCCESS-zmxhtofymhnomrenapokmumehaihldle; /usr/bin/python /home/mathias/.ansible/tmp/ansible-1385501543.62-188179043733979/wait_for; rm -rf /home/mathias/.ansible/tmp/ansible-1385501543.62-188179043733979/ >/dev/null 2>&1’”‘"’’
failed: [hslave02] => {“failed”: true, “item”: “”, “parsed”: false}
invalid output was: [sudo via ansible, key=zmxhtofymhnomrenapokmumehaihldle] password:

Regards,

Mathias

Show us your full ansible-playbook command+args and the playbook please.

Hi James,

The playbook is available here:

https://github.com/analytically/hadoop-ansible

The roles that has the reboot here:

https://github.com/analytically/hadoop-ansible/blob/master/roles/2_aggregated_links/tasks/main.yml

Thanks!

Ping?

It just looks like the system didn’t take a sudo password before, you rebooted it, and now it needs a sudo password to me.

You didn’t show any of the command line options you used to execute Ansible with though, so it’s hard to say with incomplete information.

Don’t think that’s a 1.3/1.4 thing but assumptions that --sudo-user meant sudo at one point did change, though I believe that was way back in 1.2.

You’ll probably have to debug a bit further to see what’s exactly going on.

Public service announcement: there is no SLA for asking for free support here, and we’re likely going to be always prioritizing larger issues affecting more users than an isolated report. If you require a SLA, our support and services guys are excellent, and you get an AWX license included with that. Bonus!

–Michael

Hi Michael,

The system has SSH keys installed, and never requires any passwords.

The command line options are ansible-playbook -i hosts --extra-vars “accelerate=true” site.yml.
I’ll debug it a bit further, but this definitely worked using Ansible 1.3.

Cheers,
Mathias

FOUND IT: if you run local_action wait_for with sudo: true, make sure your local user doesn’t require a sudo password either by editing /etc/sudoers locally (eg mathias ALL=(ALL) NOPASSWD: ALL)!

Mathias

or just add sudo:false to the local_action, you should really not need
superuser for the wait_for

Ah good point, didn’t realize this was possible. Thanks!