Forge Home

varnish

Install and configure Varnish Cache

35,403 downloads

15,004 latest version

5.0 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.

Support the Puppet Community by contributing to this module

You are welcome to contribute to this module by suggesting new features, currency updates, or fixes. Every contribution is valuable to help ensure that the module remains compatible with the latest Puppet versions and continues to meet community needs. Complete the following steps:

  1. Review the module’s contribution guidelines and any licenses. Ensure that your planned contribution aligns with the author’s standards and any legal requirements.
  2. Fork the repository on GitHub, make changes on a branch of your fork, and submit a pull request. The pull request must clearly document your proposed change.

For questions about updating the module, contact the module’s author.

Version information

  • 5.1.0 (latest)
  • 5.0.1
  • 5.0.0
  • 4.2.0
  • 4.1.6
  • 4.1.5
  • 4.1.4
  • 4.1.3
  • 4.1.2
  • 4.1.1
  • 4.1.0
  • 4.0.0
released Mar 6th 2019
This version is compatible with:
  • Puppet Enterprise 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
  • Puppet >= 4.7.1 < 6.0.0
  • , , , , ,

Start using this module

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

Add this module to your Puppetfile:

mod 'claranet-varnish', '5.1.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add claranet-varnish
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install claranet-varnish --version 5.1.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
Tags: varnish, cache, http

Documentation

claranet/varnish — version 5.1.0 Mar 6th 2019

puppet-varnish

Build Status Puppet Forge Forge Downloads

Table of Contents

  1. Overview - What is the puppet-varnish module?
  2. Module Description - What does the module do?
  3. Setup - The basics of getting started with puppet-varnish
  4. Usage - Configuration options and additional functionality
  5. Limitations - OS compatibility, etc.
  6. Development - Guide for contributing to the module

Overview

This module Installs and configures Varnish.

Puppet 3 Support

Please note that the master branch of this module does not support Puppet 3!

On 31st December 2016, support for Puppet 3.x was withdrawn. As such, this module no longer supports Puppet 3 - if you require Puppet 3 compatibility, please use the latest version 4.x version from the Puppet Forge, or the puppet3 branch in Git.

Module Description

This module Supports Varnish versions 3.0, 4.0, 4.1, 5.0, 5.1, 5.2, 6.0, 6.1 across Ubuntu 14.04/16.04/18.04, Debian 7/8/9 and RedHat derivates 6/7.

This module will install Varnish, by default version 4.1 from the official Packagecloud repositories, adding EPEL for RedHat-like systems and working around a SELinux policy bug in RHEL/CentOS 6 for Varnish 4.0 and above.

It will also install and configure a Systemd service for certain OS/Varnish combinations.

If necessary, you can specify any of the Varnish versions above, although there are imcompatibilities with some versions of Varnish and some OS versions, see Limitations.

Setup

To accept all default parameters - at minimum it is suggested you set a secret (if not explicitly set, one will be created via /proc/sys/kernel/random/uuid) and overwrite the packaged default.vcl.

  class { '::varnish':
    secret => '6565bd1c-b6d1-4ba3-99bc-3c7a41ffd94f',
  }

  ::varnish::vcl { '/etc/varnish/default.vcl':
    content => template('data/varnish/default.vcl.erb'),
  }

Multiple Listen Interfaces

Varnish supports listening on multiple interfaces. The module implements this by exposing a listen parameter, which can either be set to a String value for one interface (e.g. 127.0.0.1 or 0.0.0.0), or an array of values.

By default, the module will append listen_port to each element of the array - however to set a different port for each interface, just append it using standard notation, for example: 127.0.0.1:8080.

Usage

Examples

To use a static file with varnish::vcl rather than a template:

  ::varnish::vcl { '/etc/varnish/default.vcl':
   content => file('data/varnish/default.vcl'),
   # Equivalent to: source => 'puppet:///modules/data/varnish/default.vcl'
  }

To pin Varnish to a specific version - you may also provide varnish_version as long as it matches the major and minor version in package_ensure, however the module will automatically calculate varnish_version if not set:

  class { '::varnish':
    package_ensure => '4.0.5-1~xenial',
  }

To configure Varnish to listen on port 8080 on localhost and port 6081 on 172.16.100.10:

  class { '::varnish':
    listen => ['127.0.0.1:8080','172.16.100.10:6081'],
  }

To configure Varnish to listen on port 80, specifically on localhost and 192.168.1.195:

  class { '::varnish':
    listen      => ['127.0.0.1','192.168.1.195'],
    listen_port => '80',
  }

To use multiple storage backends in varnish for example a primary 4GB memory backend and a 50GB file backend:

  class { '::varnish':
    storage_type => 'malloc',
    storage_size => '4G',
    storage_additional => [
      'file,/var/lib/varnish/varnish_additional.bin,50G',

    ]
  }

Parameter Reference

Parameter Description
addrepo Whether to add the official Varnish repos
varnish_version Major Varnish version
secret Secret for admin access
secret_file File to store the secret
vcl_conf Varnish vcl config file path
listen IP to bind to
listen_port TCP port to listen on
admin_listen Admin IP to bind to
admin_port TCP port for admin to listen on
min_threads Minimum Varnish worker threads
max_threads Maximum Varnish worker threads
thread_timeout Terminate threads after this long idle
storage_type malloc or file
storage_file File to mmap on disk for cache storage
storage_size Size of storage file or RAM, eg 10G or 50%
storage_additional Hash of additional storage backends, passed plainly to varnishd -s after the normal configured storage backends
package_ensure Version of Varnish package to install, eg 3.0.5-1.el6
runtime_params hash of run-time parameters to be specified at startup

Limitations

There are several limitations with various Varnish and OS combinations. The module will attempt to flag known issues, however:

  • Varnish 3.0 is not supported on Ubuntu 16.04
  • Varnish 5.x, 6.x, supports only Debian 8 and Ubuntu 16.04

Development

  • Copyright (C) 2017 Claranet
  • Distributed under the terms of the Apache License v2.0 - see LICENSE file for details.