4
# A script that loads new vcl based on data from /etc/sysconfig/varnish
5
# Ingvar Hagelund <ingvar@redpill-linpro.com>
7
# This is free software, distributed under the standard 2 clause BSD license,
8
# see the LICENSE file in the Varnish documentation directory
10
# The following environment variables have to be set:
11
# RELOAD_VCL, VARNISH_VCL_CONF, VARNISH_ADMIN_LISTEN_PORT
12
# The following are optional:
13
# VARNISH_SECRET_FILE, VARNISH_ADMIN_LISTEN_ADDRESS
15
# Requires GNU bash and GNU date
21
echo "Missing configuration variable: $1"
28
RELOAD_VCL=\"$RELOAD_VCL\"
29
VARNISH_VCL_CONF=\"$VARNISH_VCL_CONF\"
30
VARNISH_ADMIN_LISTEN_ADDRESS=\"$VARNISH_ADMIN_LISTEN_ADDRESS\"
31
VARNISH_ADMIN_LISTEN_PORT=\"$VARNISH_ADMIN_LISTEN_PORT\"
32
VARNISH_SECRET_FILE=\"$VARNISH_SECRET_FILE\"
37
exec="/usr/sbin/varnishd"
38
. /etc/sysconfig/varnish
43
if [ ! "$RELOAD_VCL" = "1" ]; then
44
echo "Error: RELOAD_VCL is not set to 1"
47
elif [ -z "$VARNISH_VCL_CONF" ]; then
48
echo "Error: VARNISH_VCL_CONF is not set"
51
elif [ ! -s "$VARNISH_VCL_CONF" ]; then
52
echo "Eror: VCL config $VARNISH_VCL_CONF is unreadable or empty"
55
elif [ -z "$VARNISH_ADMIN_LISTEN_ADDRESS" ]; then
56
echo "Warning: VARNISH_ADMIN_LISTEN_ADDRESS is not set, using 127.0.0.1"
57
VARNISH_ADMIN_LISTEN_ADDRESS="127.0.0.1"
59
elif [ -z "$VARNISH_ADMIN_LISTEN_PORT" ]; then
60
echo "Error: VARNISH_ADMIN_LISTEN_PORT is not set"
63
elif [ -z "$VARNISH_SECRET_FILE" ]; then
64
echo "Warning: VARNISH_SECRET_FILE is not set"
67
elif [ ! -s "$VARNISH_SECRET_FILE" ]; then
68
echo "Error: varnish secret file $VARNISH_SECRET_FILE is unreadable or empty"
71
secret="-S $VARNISH_SECRET_FILE"
74
# Done parsing, set up command
75
VARNISHADM="varnishadm $secret -T $VARNISH_ADMIN_LISTEN_ADDRESS:$VARNISH_ADMIN_LISTEN_PORT"
77
# Now do the real work
78
new_config="reload_$(date +%FT%H:%M:%S)"
80
# Check if we are able to connect at all
81
if $VARNISHADM vcl.list > /dev/null; then
82
$debug && echo vcl.list succeeded
84
echo "Unable to run $VARNISHADM vcl.list"
88
if $VARNISHADM vcl.list | awk ' { print $3 } ' | grep -q $new_config; then
89
echo Trying to use new config $new_config, but that is already in use
93
current_config=$( $VARNISHADM vcl.list | awk ' /^active/ { print $3 } ' )
95
echo "Loading vcl from $VARNISH_VCL_CONF"
96
echo "Current running config name is $current_config"
97
echo "Using new config name $new_config"
99
if $VARNISHADM vcl.load $new_config $VARNISH_VCL_CONF; then
100
$debug && echo "$VARNISHADM vcl.load succeded"
102
echo "$VARNISHADM vcl.load failed"
106
if $VARNISHADM vcl.use $new_config; then
107
$debug && echo "$VARNISHADM vcl.use succeded"
109
echo "$VARNISHADM vcl.use failed"