Why not using the "reboot" module which is done for that instead of
using shell module with some tricks ?
Regards,
JYL
Le 12/02/2020 à 19:30, Work-Hard a écrit :
*Playbook doesn't run completely stuck after "check if reboot
required". Please assist!*
*
*
*
Play-Book*
---
- hosts: ubuntu
become: true
any_errors_fatal: true
serial: 1
max_fail_percentage: 0
vars:
ansible_user: ubuntu
tasks:
# do an "apt-get update", to ensure latest package lists
- name: apt-get update
apt:
update-cache: yes
changed_when: 0
# get a list of packages that have updates
- name: get list of pending upgrades
command: apt-get --simulate dist-upgrade
args:
warn: false # don't warn us about apt having its own plugin
register: apt_simulate
changed_when: 0
- name: Update cache
apt:
update-cache: yes
changed_when: false
- name: Fetch package list of updates
command: apt list --upgradable
register: aptlist
- set_fact:
updates: "{{ aptlist.stdout_lines | difference(['Listing...'])
| map('regex_replace', '^(.*?)/(.*)', '\\1') | list }}"
- debug: var=updates
# tell user about packages being updated
- name: show pending updates
debug:
var: updates
when: updates.0 is defined
# running package ack each server update with a prompt
- pause:
when: updates.0 is defined
# if a new kernel is incoming, remove old ones to avoid full /boot
- name: apt-get autoremove
command: apt-get -y autoremove
args:
warn: false
when: '"Inst linux-image-" in apt_simulate.stdout'
changed_when: 0
# do the actual apt-get dist-upgrade
- name: apt-get dist-upgrade
apt:
upgrade: dist # upgrade all packages to latest version
register: upgrade_output
# check if we need a reboot
- name: check if reboot needed
stat: path=/var/run/reboot-required
register: file_reboot_required
# "meta: end_play" aborts the rest of the tasks in the current
«tasks:»
# section, for the current desired server
- meta: end_play
when: not file_reboot_required.stat.exists
# because of the above meta/when we at this point know that the
current
# host needs a reboot
# prompt for manual input before doing the actual reboot
- name: Confirm reboot of ubuntu
pause:
- name: reboot node
shell: sleep 2 && shutdown -r now "Reboot triggered by ansible"
async: 1
poll: 0
ignore_errors: true
# poll ssh port until we get a tcp connect
- name: wait for node to finish booting
become: false
local_action: wait_for host=ubuntu
port=22
state=started
delay=5
timeout=600
# give sshd time to start fully
- name: wait for ssh to start fully
pause:
seconds: 15
# wait a few minutes between hosts, unless we're on the last
- name: waiting between hosts
pause:
minutes: 10
when: inventory_hostname != ansible_play_hosts[-1]
*Output*
PLAY [ubuntu]
************************************************************************************************************************************************
TASK [Gathering Facts]
***************************************************************************************************************************************
ok: [10.0.2.236]
TASK [apt-get update]
****************************************************************************************************************************************
ok: [10.0.2.236]
TASK [get list of pending upgrades]
**************************************************************************************************************************
ok: [10.0.2.236]
TASK [Update cache]
******************************************************************************************************************************************
ok: [10.0.2.236]
TASK [Fetch package list of updates]
*************************************************************************************************************************
changed: [10.0.2.236]
TASK [set_fact]
**********************************************************************************************************************************************
ok: [10.0.2.236]
TASK [debug]
*************************************************************************************************************************************************
ok: [10.0.2.236] => {
"updates": []
}
TASK [show pending updates]
**********************************************************************************************************************************
skipping: [10.0.2.236]
TASK [pause]
*************************************************************************************************************************************************
skipping: [10.0.2.236]
TASK [apt-get autoremove]
************************************************************************************************************************************
skipping: [10.0.2.236]
TASK [apt-get dist-upgrade]
**********************************************************************************************************************************
ok: [10.0.2.236]
TASK [check if reboot needed]
********************************************************************************************************************************
ok: [10.0.2.236]
PLAY RECAP
***************************************************************************************************************************************************
10.0.2.236 : ok=9 changed=1 unreachable=0
failed=0 skipped=3 rescued=0 ignored=0
--
You received this message because you are subscribed to the Google
Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/61972836-e789-44a2-9831-603beb4254a3%40googlegroups.com
<https://groups.google.com/d/msgid/ansible-project/61972836-e789-44a2-9831-603beb4254a3%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups "Ansible
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/79ba3f5f-5925-c3db-4141-136366177283%40lenhof.eu.org.