Skip to content

Latest commit

 

History

293 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Puppet module for Caddy

Build Status Code Coverage Puppet Forge Puppet Forge - downloads Puppet Forge - endorsement Puppet Forge - scores License

Table of Contents

  1. Description
  2. Setup - The basics of getting started with Caddy
  3. Usage - Configuration options and additional functionality
  4. Limitations - OS compatibility, etc.
  5. Development - Guide for contributing to the module

Description

This module installs and configures Caddy - The HTTP/2 web server with automatic HTTPS.

Important: This module only supports the installation of Caddy 2.x. If you want to install Caddy 1.x, you should use version v2.0.0 of this module.

Setup

What Caddy affects

  • Caddy binary
  • Caddy configuration file
  • Caddy virtual hosts
  • Caddy service

Setup Requirements

This module has the following dependencies:

When install_method is set to 'repo', this module implicitly requires either puppetlabs-apt module for Debian distro family, or puppet-yum module for RedHat distro family.

Beginning with Caddy

Install Caddy without any configuration:

include caddy

Usage

Install customized version of Caddy

class { 'caddy':
  caddy_features => 'http.git,http.filter,http.ipfilter',
}

Install specific version of Caddy

class { 'caddy':
  version        => '2.0.0',
  install_method => 'github',
}

Install Caddy and configure virtual host, based on source:

caddy::vhost { 'example1':
  source => 'puppet:///modules/caddy/etc/caddy/config/example1.conf',
}

Install Caddy and configure virtual host, based on content:

caddy::vhost { 'example2':
  content => 'localhost:2015',
}

Use apache-like configuration files layout:

class { 'caddy':
  config_dir => '/etc/caddy/conf-available',
  config_enabled_dir => '/etc/caddy/conf-enabled',
  vhost_dir => '/etc/caddy/sites-available',
  vhost_enable_dir => '/etc/caddy/sites-enabled',
  config_files => {
    admin_port_2020 => {
      content => "{\n  admin localhost:2020\n}\n",
    },
  },
  vhosts => {
    port_3000 => {
      content => "http://localhost:3000 {\n  respond \\"port 3000\\"\n}\n",
    },
    port_3001 => {
      ensure => 'disabled',
      content => "http://localhost:3001 {\n  respond \\"port 3001\\"\n}\n",
    }
  }
}

Same as above but configured in Hiera:

caddy::config_dir: /etc/caddy/conf-available
caddy::config_enable_dir: /etc/caddy/conf-enabled
caddy::vhost_dir: /etc/caddy/sites-available
caddy::vhost_enable_dir: /etc/caddy/sites-enabled
caddy::config_files:
  admin_port_2020:
    content: |
      {
        admin localhost:2020
      }
caddy::vhosts:
  port_3000:
    content: |
      http://localhost:3000 {
        respond "port 3000"
      }
  port_3001:
    ensure: disabled
    content: |
      http://localhost:3001 {
        respond "port 3001"
      }

You may consider setting following parameters also. This allows enabling/disabling config files and virtual hosts manually.

caddy::purge_config_enable_dir: false
caddy::purge_vhost_enable_dir: false

Reference

The reference documentation of this module is generated using puppetlabs/puppetlabs-strings.

Limitations

This module has been tested on:

  • AlmaLinux 8/9
  • CentOS 9
  • Debian 11/12
  • OracleLinux 8/9
  • RedHat 8/9
  • Rocky 8/9
  • Ubuntu 20.04/22.04/24.04

For the official list of all tested distributions, please take a look at the metadata.json

Development

This module has grown over time based on a range of contributions from people using it. If you follow these contributing guidelines your patch will likely make it into a release a little more quickly.

Author

This module is maintained by Vox Pupuli. It was originally written and maintained by Lukasz Rohde.

Releases

Sponsor this project

Packages

Used by

Contributors

Languages