net-ops/global/overlay/usr/local/bin/run-cosmos

47 lines
827 B
Plaintext
Raw Normal View History

2017-02-02 14:37:32 +00:00
#!/bin/bash
2015-02-23 15:02:43 +00:00
#
# Simplify running cosmos, with serialization if flock is available.
#
2017-02-02 14:37:32 +00:00
readonly PROGNAME=$(basename "$0")
readonly LOCKFILE_DIR=/tmp
readonly LOCK_FD=200
2015-02-23 15:02:43 +00:00
2017-02-02 14:37:32 +00:00
lock() {
local prefix=$1
local fd=${2:-$LOCK_FD}
local lock_file=$LOCKFILE_DIR/$prefix.lock
2015-02-23 15:02:43 +00:00
2017-02-02 14:37:32 +00:00
# create lock file
eval "exec $fd>$lock_file"
# acquier the lock
2023-02-06 15:41:04 +00:00
flock -n "$fd" \
2017-02-02 14:37:32 +00:00
&& return 0 \
|| return 1
}
eexit() {
2023-02-06 15:41:04 +00:00
local error_str="$*"
2017-02-02 14:37:32 +00:00
2023-02-06 15:41:04 +00:00
echo "$error_str"
2017-02-02 14:37:32 +00:00
exit 1
}
2015-02-23 15:02:43 +00:00
2017-02-02 14:37:32 +00:00
main () {
2023-02-06 15:41:04 +00:00
lock "$PROGNAME" || eexit "Only one instance of $PROGNAME can run at one time."
cosmos "$@" update
cosmos "$@" apply
2015-02-23 15:02:43 +00:00
2017-02-02 14:37:32 +00:00
touch /var/run/last-cosmos-ok.stamp
2023-02-06 15:41:04 +00:00
find /var/lib/puppet/reports/ -type f -mtime +10 -print0 | xargs -0 rm -f
2017-02-02 14:37:32 +00:00
}
2023-02-06 15:41:04 +00:00
main "$@"
2017-02-02 14:37:32 +00:00
if [ -f /cosmos-reboot ]; then
rm -f /cosmos-reboot
reboot
fi