From 13443b7fe50f2e7ced7cff1eeba9b4bbb698beba Mon Sep 17 00:00:00 2001 From: theonlydoo Date: Tue, 24 Feb 2015 17:21:26 +0100 Subject: [PATCH] Adding a restart handler --- roles/update/files/ignore | 2 ++ roles/update/files/wrapper.sh | 57 ++++++++++++++++++++++++++++++++++ roles/update/tasks/main.yml | 2 +- roles/update/tasks/restart.yml | 19 ++++++++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 roles/update/files/ignore create mode 100644 roles/update/files/wrapper.sh create mode 100644 roles/update/tasks/restart.yml diff --git a/roles/update/files/ignore b/roles/update/files/ignore new file mode 100644 index 0000000..a0ea49f --- /dev/null +++ b/roles/update/files/ignore @@ -0,0 +1,2 @@ +processes +dummy diff --git a/roles/update/files/wrapper.sh b/roles/update/files/wrapper.sh new file mode 100644 index 0000000..a1f2009 --- /dev/null +++ b/roles/update/files/wrapper.sh @@ -0,0 +1,57 @@ +#!/bin/bash +ignorefile="/tmp/ignore" +restarts(){ + services=$(checkrestart "${list}" | awk '/These are the init scripts:/ { seen =1 } seen {print}'|egrep -v "These are the init scripts:|^$"|tr " " ","| awk -F "," '{ print $2 }'|grep -vi "processes") + if [ $(echo $services | grep -ci "restart") -gt 0 ]; then + services=$(checkrestart "${list}" | awk '/These are the init scripts:/ { seen =1 } seen {print}'|egrep -v "These are the init scripts:|^$"|tr "/" ","|tr " " "," | awk '{ print $3 }'|grep -vi "processes") + fi + numservice=$(echo $services | wc -w) + if [ $numservice -gt 0 ]; then + for service in $services; do + logger "Restart service $service" + /etc/init.d/$service restart + if [ $? -ne 0 ]; then + logger "Service $service had a problem on restart, error exit" + exit 1 + fi + done + else + logger "No services to restart !" + exit 0 + fi +} +ignorelist(){ + list="" + for line in $(cat $ignorefile); do + list="$list -i $line" + done +} +checkignorefile(){ + if [ ! -f $ignorefile ]; then + logger "No ignorelist, becareful ! I'll exit just to be safe" + exit 1 + fi +} +checkbin(){ + dpkg -L debian-goodies|grep -q checkrestart + if [ $? -ne 0 ]; then + logger "Failed to find checkrestart, so sad" + exit 1 + fi +} +checkroot(){ + izroot=$(whoami) + echo $izroot | grep -q "root" + if [ $? -ne 0 ]; then + logger "Failed to be root, so sad" + exit 1 + fi +} +main(){ + checkroot + checkbin + checkignorefile + ignorelist + restarts +} +main diff --git a/roles/update/tasks/main.yml b/roles/update/tasks/main.yml index 48adef4..bb92f0d 100644 --- a/roles/update/tasks/main.yml +++ b/roles/update/tasks/main.yml @@ -2,7 +2,7 @@ - include: normal.yml #- include: by_packages.yml - +- include: restart.yml - name: ldconfig tags: - normal diff --git a/roles/update/tasks/restart.yml b/roles/update/tasks/restart.yml new file mode 100644 index 0000000..348e4a4 --- /dev/null +++ b/roles/update/tasks/restart.yml @@ -0,0 +1,19 @@ +--- +- name: Install debian-goodies + apt: pkg=debian-goodies state=installed update_cache=no + tags: test + when: ansible_distribution == 'Debian' + ignore_errors: yes + +- name: Copy checkrestart wrapper and config + tags: test + copy: src={{ item }} dest=/tmp/{{ item }} + with_items: + - wrapper.sh + - ignore + +- name: Execute Wrapper + tags: test + shell: /bin/bash -x /tmp/wrapper.sh + +#vim: set textwidth=0 ft=yaml ts=2 sw=2 expandtab: