Jérémy Lecour
b2e22413bc
All checks were successful
Ansible Lint |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|2706|22|2684|5|:-1:
Reference build: <a href="https://jenkins.evolix.org/job/gitea/job/ansible-roles/job/unstable/11//ansiblelint">Evolix » ansible-roles » unstable #11</a>
gitea/ansible-roles/pipeline/head This commit looks good
121 lines
3.6 KiB
Bash
121 lines
3.6 KiB
Bash
#!/bin/bash
|
|
|
|
: "${AUTOSYSADMIN_LIB:=/usr/local/lib/autosysadmin}"
|
|
source "${AUTOSYSADMIN_LIB}/common.sh" || exit 1
|
|
source "${AUTOSYSADMIN_LIB}/restart.sh" || exit 1
|
|
|
|
# shellcheck disable=SC2034
|
|
RUNNING="nwh-fr"
|
|
|
|
## Possible values for RUNNING :
|
|
## never => disabled
|
|
## always => enabled
|
|
## nwh-fr => enabled during non-working-hours in France
|
|
## nwh-ca => enabled during non-working-hours in Canada (not supported yet)
|
|
## custom => enabled if `running_custom()` function returns 0, otherwise disabled.
|
|
|
|
## Uncomment and customize this method if you want to have a special logic :
|
|
##
|
|
## return 1 if we should not run
|
|
## return 0 if we should run
|
|
##
|
|
## Some available functions :
|
|
## is_weekend() : Saturday or Sunday
|
|
## is_holiday() : holiday in France (based on `gcal(1)`)
|
|
## is_workday() : not weekend and not holiday
|
|
## is_worktime() : work day between 9-12h and 14-18h
|
|
#
|
|
# running_custom() {
|
|
# # implement your own custom method to decide if we should run or not
|
|
# }
|
|
|
|
## The name of the service, mainly for logging
|
|
service_name="example"
|
|
## The SysVinit script name
|
|
sysvinit_script="${service_name}"
|
|
## The systemd service name
|
|
systemd_service="${service_name}.service"
|
|
|
|
is_service_alive() {
|
|
## this must return 0 if the service is alive, otherwise return 1
|
|
## Example:
|
|
pgrep -u USER PROCESS_NAME > /dev/null
|
|
}
|
|
|
|
## Action for SysVinit system
|
|
sysvinit_action() {
|
|
# Save service status before restart
|
|
timeout 2 "/etc/init.d/${sysvinit_script}" status | save_in_log_dir "${service_name}.before.status"
|
|
|
|
# Try to restart
|
|
timeout 20 "/etc/init.d/${sysvinit_script}" restart > /dev/null
|
|
rc=$?
|
|
if [ "${rc}" -eq "0" ]; then
|
|
log_action "Restart ${service_name}: OK"
|
|
else
|
|
log_action "Restart ${service_name}: failed"
|
|
fi
|
|
|
|
# Save service status after restart
|
|
timeout 2 "/etc/init.d/${sysvinit_script}" status | save_in_log_dir "${service_name}.after.status"
|
|
}
|
|
|
|
## Action for systemd system
|
|
systemd_action() {
|
|
# Save service status before restart
|
|
systemctl status "${systemd_service}" | save_in_log_dir "${service_name}.before.status"
|
|
|
|
# Try to restart
|
|
# systemctl (only for NRPE ?) sometimes returns 0 even if the service has failed to start
|
|
# so we check the status explicitly
|
|
timeout 20 systemctl restart "${systemd_service}" > /dev/null \
|
|
&& sleep 1 \
|
|
&& systemctl status "${systemd_service}" > /dev/null
|
|
rc=$?
|
|
if [ "${rc}" -eq "0" ]; then
|
|
log_action "Restart ${service_name}: OK"
|
|
else
|
|
log_action "Restart ${service_name}: failed"
|
|
fi
|
|
|
|
# Save service status after restart
|
|
systemctl status "${systemd_service}" | save_in_log_dir "${service_name}.after.status"
|
|
}
|
|
|
|
# Should we run?
|
|
if ! is_supposed_to_run; then
|
|
# log_global "${PROGNAME} is not supposed to run (RUNNING=${RUNNING})."
|
|
exit 0
|
|
fi
|
|
if is_service_alive; then
|
|
# log_global "${service_name} process alive. Aborting"
|
|
exit 0
|
|
fi
|
|
|
|
# Yes we do, so check for sysvinit or systemd
|
|
if is_debian_version "8" "<="; then
|
|
if ! is_sysvinit_enabled "*${sysvinit_script}*"; then
|
|
# log_global "${service_name} not enabled. Aborting"
|
|
exit 0
|
|
fi
|
|
|
|
# Let's finally do the action
|
|
pre_restart
|
|
sysvinit_action
|
|
post_restart
|
|
else
|
|
if ! is_systemd_enabled "${systemd_service}"; then
|
|
# log_global "${service_name} is disabled (or missing), nothing left to do."
|
|
exit 0
|
|
fi
|
|
if is_systemd_active "${systemd_service}"; then
|
|
# log_global "${service_name} is active, nothing left to do."
|
|
exit 0
|
|
fi
|
|
|
|
# Let's finally do the action
|
|
pre_restart
|
|
systemd_action
|
|
post_restart
|
|
fi
|