traefik

Module to manage the Traefik reverse proxy

Praekelt Foundation

praekeltfoundation

10,083 downloads

7,748 latest version

5.0 quality score

Version information

  • 0.3.1 (latest)
  • 0.3.0
  • 0.2.0
  • 0.1.1
  • 0.1.0
released Oct 20th 2016
This version is compatible with:
  • Puppet Enterprise 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
  • Puppet >= 3.4.0
  • Debian
    ,
    Ubuntu

Start using this module

Documentation

praekeltfoundation/traefik — version 0.3.1 Oct 20th 2016

puppet-traefik

A Puppet module to manage Traefik

Usage

You can just include traefik or set some basic parameters:

class { 'traefik':
  version     => '1.0.0-rc1',
  config_hash => {
    'accessLogsFile' => '/var/log/traefik/access.log',
    'logLevel'       => 'INFO'
  },
}

Different sections of Traefik's TOML configuration file can be defined with the traefik::config::section type. The name of the Puppet resource, in this case 'web' is used for the top-level of the resulting hash and will result in a table [web] in the TOML file:

traefik::config::section { 'web':
  description => 'API backend',
  order       => '10',
  hash        => {'address' => ':9090'}
}

Hashes can be nested to produce nested TOML tables. The following resource will output the common http and https EntryPoints.

traefik::config::section { 'entryPoints':
  hash => {
    'http'  => {
      'address' => ':80'
    },
    'https' => {
      'address' => ':443',
      'tls'     => {}
    }
  }
}

File backend

Configuring backends and frontends using hashes in traefik::config::section resources can quickly get tedious. The traefik::config::file class and traefik::config::file_rule defined type make setting this up a bit easier.

To start, configure some basics for the file backend:

class { 'traefik::config::file':
  filename => 'rules.toml',
  watch    => true
}

This will set up Traefik to read configuration for the file backend from a file called rules.toml and to watch that file for changes. Next, we create some frontend and backend rules:

traefik::config::file_rule { 'my-service':
  frontend => {
    'routes' => {
      'test_1' => {
        'rule' => 'Host:my-service.example.com'
      }
    }
  },
  backend  => {
    'servers' => {
      'server1' => {
        'url'    => 'http://172.17.0.2:80',
        'weight' => 10
      },
      'server2' => {
        'url'    => 'http://172.17.0.3:80',
        'weight' => 1
      }
    }
  }
}

This should produce (roughly) the following config in rules.toml:

[frontends.my-service-frontend]
backend = 'my-service-backend'

[frontends.my-service-frontend.routes.test_1]
rule = "Host:my-service.example.com"

[backends.my-service-backend.servers.server1]
url = "http://172.17.0.2:80"
weight = 10

[backends.my-service-backend.servers.server2]
url = "http://172.17.0.3:80"
weight = 1

Limitations

  • Currently only works on Ubuntu 14.04 and Debian 8 (pull requests welcome).
  • Uses the toml-rb gem to generate config with a parser function. This means that your Puppet server must have the gem correctly installed. See this page for Puppet 4 instructions.
  • There is no validation on config parameters. Everything (and anything) can be specified via hashes.