Forge Home

varnish_elb

Allow Varnish to point at ELBs, CentOS/RedHat 7 only.

8,803 downloads

7,703 latest version

3.4 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 0.2.0 (latest)
  • 0.1.0
released Nov 24th 2015

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'tazjin-varnish_elb', '0.2.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add tazjin-varnish_elb
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install tazjin-varnish_elb --version 0.2.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.

Download

Documentation

tazjin/varnish_elb — version 0.2.0 Nov 24th 2015

Varnish + ELB + systemd

This repository provides a script and several systemd-units to allow for using Varnish in combination with an AWS Elastic Load Balancer, or theoretically any backend that has constantly changing DNS records.

The script itself can be used without systemd as well, but the units here are provided for convenience.

Script overview

The script is supposed to run periodically. It takes the target hostname and a name to use for the Varnish director as its arguments. The director name is also used for the VCL file name at /etc/varnish/${DIRECTOR}.vcl.

When run it will resolve the provided hostname and create a director with an entry for every A record that the hostname eventually resolves to.

The configuration is written to a temporary file and only replaced at the specified path if the records have changed.

Units overview

There are two pairs of related units included. To make this setup work two things need to be done:

  • regenerating the Varnish configuration periodically
  • reloading Varnish if the configuration changes

The two unit pairs tackle these tasks separately.

varnish-elb.{timer|service} provide a pair that will periodically run the script. This is configured to run every 30 seconds, half the TTL of an ELB A record.

varnish-elb[@].{path|service} provides a path unit that watches the specified VCL file (presumed to be in /etc/varnish) and triggers the reload unit if the VCL changes.

Configuration

A simple environment file in /etc/defaults/varnish:

TARGET_HOSTNAME=some-elb-instance.elb.amazonaws.com
DIRECTOR=elb

Puppet usage example

The Puppet module can be used as such:

include { 'varnish_elb':
    elb_hostname     => 'some-elb-instance.elb.amazonaws.com',
    varnish_director => 'elb,'
}

Additional options provided by the module are elb_port, connect_timeout, first_byte_timeout and between_bytes_timeout. These are all set to the Varnish default values.