~ubuntu-branches/debian/sid/varnish/sid

« back to all changes in this revision

Viewing changes to redhat/varnish_reload_vcl

  • Committer: Bazaar Package Importer
  • Author(s): Stig Sandbeck Mathisen
  • Date: 2011-03-21 10:16:07 UTC
  • mfrom: (24.1.2 experimental)
  • Revision ID: james.westby@ubuntu.com-20110321101607-528fzl583fqanas5
Tags: 2.1.5-2
ReleaseĀ forĀ unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
#
 
3
# reload vcl revisited
 
4
# A script that loads new vcl based on data from /etc/sysconfig/varnish
 
5
# Ingvar Hagelund <ingvar@redpill-linpro.com>
 
6
#
 
7
# This is free software, distributed under the standard 2 clause BSD license,
 
8
# see the LICENSE file in the Varnish documentation directory
 
9
#
 
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
 
14
#
 
15
# Requires GNU bash and GNU date
 
16
#
 
17
 
 
18
debug=false
 
19
 
 
20
missing() {
 
21
        echo "Missing configuration variable: $1"
 
22
        exit 2
 
23
}
 
24
 
 
25
print_debug() {
 
26
        echo "
 
27
Parsed configuration:
 
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\"
 
33
"
 
34
}
 
35
 
 
36
# Read configuration
 
37
exec="/usr/sbin/varnishd"
 
38
. /etc/sysconfig/varnish
 
39
 
 
40
$debug && print_debug
 
41
 
 
42
# Check configuration
 
43
if [ ! "$RELOAD_VCL" = "1" ]; then
 
44
        echo "Error: RELOAD_VCL is not set to 1"
 
45
        exit 2
 
46
 
 
47
elif [ -z "$VARNISH_VCL_CONF" ]; then
 
48
        echo "Error: VARNISH_VCL_CONF is not set"
 
49
        exit 2
 
50
 
 
51
elif [ ! -s "$VARNISH_VCL_CONF" ]; then
 
52
        echo "Eror: VCL config $VARNISH_VCL_CONF is unreadable or empty"
 
53
        exit 2
 
54
 
 
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"
 
58
 
 
59
elif [ -z "$VARNISH_ADMIN_LISTEN_PORT" ]; then
 
60
        echo "Error: VARNISH_ADMIN_LISTEN_PORT is not set"
 
61
        exit 2
 
62
 
 
63
elif [ -z "$VARNISH_SECRET_FILE" ]; then
 
64
        echo "Warning: VARNISH_SECRET_FILE is not set"
 
65
        secret=""
 
66
 
 
67
elif [ ! -s "$VARNISH_SECRET_FILE" ]; then
 
68
        echo "Error: varnish secret file $VARNISH_SECRET_FILE is unreadable or empty"
 
69
        exit 2
 
70
else
 
71
        secret="-S $VARNISH_SECRET_FILE"
 
72
fi
 
73
 
 
74
# Done parsing, set up command
 
75
VARNISHADM="varnishadm $secret -T $VARNISH_ADMIN_LISTEN_ADDRESS:$VARNISH_ADMIN_LISTEN_PORT"
 
76
 
 
77
# Now do the real work
 
78
new_config="reload_$(date +%FT%H:%M:%S)"
 
79
 
 
80
# Check if we are able to connect at all
 
81
if $VARNISHADM vcl.list > /dev/null; then
 
82
        $debug && echo vcl.list succeeded
 
83
else
 
84
        echo "Unable to run $VARNISHADM vcl.list"
 
85
        exit 1
 
86
fi
 
87
 
 
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
 
90
        exit 2
 
91
fi
 
92
 
 
93
current_config=$( $VARNISHADM vcl.list | awk ' /^active/ { print $3 } ' )
 
94
 
 
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"
 
98
 
 
99
if $VARNISHADM vcl.load $new_config $VARNISH_VCL_CONF; then
 
100
        $debug && echo "$VARNISHADM vcl.load succeded"
 
101
else
 
102
        echo "$VARNISHADM vcl.load failed"
 
103
        exit 1
 
104
fi
 
105
 
 
106
if $VARNISHADM vcl.use $new_config; then
 
107
        $debug && echo "$VARNISHADM vcl.use succeded"
 
108
else
 
109
        echo "$VARNISHADM vcl.use failed"
 
110
        exit 1
 
111
fi
 
112
$VARNISHADM vcl.list
 
113
echo Done
 
114
exit 0
 
115