Skip to content

Instantly share code, notes, and snippets.

@rmetzler
Forked from mojodna/default.vcl
Created October 2, 2020 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rmetzler/df190b4936eed7e216339172785eba74 to your computer and use it in GitHub Desktop.
Save rmetzler/df190b4936eed7e216339172785eba74 to your computer and use it in GitHub Desktop.
Resolve ELB IPs and create a dynamic Varnish backend list (intended to run out of cron).
# ...
include "dynamic_backends.vcl";
# ...
#!/bin/bash
set -e
elb_hostname=${elb_hostname:-myapp.herokuapp.com}
backend_vcl=${backend_vcl:-/etc/varnish/dynamic_backends.vcl}
ips=$(ruby -rresolv -e "puts Resolv::DNS.new.getaddresses('$elb_hostname').map(&:to_s)")
# clear out existing backends
cat <<EOF > $backend_vcl
director my_backend round-robin {
EOF
# create a new backends.vcl
for ip in $ips; do
cat <<EOF >> $backend_vcl
{
.backend = {
.host = "$ip";
.port = "http";
}
}
EOF
done
cat <<EOF >> $backend_vcl
}
EOF
# restart varnish
/etc/init.d/varnish reload
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment