Giter Club home page Giter Club logo

puppet-apache2's Introduction

# Apache2 Recipe #
apache2 -- v0.4 by Sam Quigley <[email protected]>

Basic module for configuring apache via puppet.  Debian/Ubuntu-specific at
the moment, but patches are welcome.

Based in part on code by Tim Stoop <[email protected]> and 
David Schmitt <[email protected]>

## Configuration ##

This module installs apache2 from packages and promptly overwrites the default
configuration with one that does nothing other than include various 
directories:

* /etc/apache2/mods-enabled/
* /etc/apache2/conf.d
* /etc/apache2/sites-enabled/

Defines are provided to allow recipes and child classes to interact with these
directories -- see below.

An additional class, `apache2_debian`, is provided which attempts to mimic
the default configuration of a freshly-installed debian apache2 package.

A single global configuration variable is available, `$apache2_mpm`, which
controls which of the mpm packages are installed.  Its possible values are:

* 'event':  Use the event driven model (experimental)
* 'prefork':  Traditional 
* 'worker': High speed threaded model

'worker' is the default.

See the apache2::debian and apache2::basic subclasses for examples of how to 
use and configure this class.  Note that these do *NOT* install site 
definitions -- so simply including them in a node definition won't work...

### `apache2::config` ###

`apache2::config` installs a configuration snippet in conf.d.  Takes the following options:

* `name`: the name of the config snipppet  [namevar]
* `ensure`: typically set to "present" or "absent", but any value legal 
for a file resource can be used.  Defaults to "present"
* `content`: set this to the text of the snippet -- eg, through 
template().  Defaults to `template("apache2/$name.conf.erb")`, which is
unlikely to be what you want.
* `order`: specifies the load order for this config snippet.  the snippet 
will end up in `/etc/apache2/conf.d/$order-$name.conf`, and apache will load 
files in alphanumeric order.  Defaults to "500"
* `require`: if set, this will require that a package of the given name exists
before evaluating the rest of the config definition.  It does not currently
remove the package, even if ensure is set to absent.

### `apache2::module` ###

`apache2::module` enables an apache module.  It does *NOT* currently install
one for you, except through the "require" argument -- see below.  
Options are:

* `name`: name of the module.  A file with the name 
`mods-available/$name.load` is expected to exist in the apache2 directory
* `ensure`: can be "present" or "absent"
* `require`: if set, this will require that a package of the given name exists
before evaluating the rest of the module definition.  It does not currently
remove the package, even if ensure is set to absent.

### `apache2::site` ###

`apache2::site` enables an apache site.  Options are:

* `name`: name of the site.  A file with the name 
`sites-available/$name` is expected to exist in the apache2 directory
* `ensure`: can be "present", "installed", or "absent"
* `require`: if set, this will require that a package of the given name exists
before evaluating the rest of the site definition.  It does not currently
remove the package, even if ensure is set to absent.
* `content`: set this to the text of the site definition -- eg, through 
template().  If unset, the module will simply ensure that a file named 
"/etc/apache2/sites-available/$name" exists

## Example ##

See the code for the apache2_debian subclass for an example of how to use
this module.

## To Do ##

* apache2::{module,config,site} should really be native types.
* The configuration of apache2::basic is essentially arbitrary, based on 
what I needed to override at the moment. Some logic would probably be 
helpful.

## Changes ##

* stop explicitly importing stuff from manifests/classes; rely on autoload instead
* add `site_include` definition, similar to `site`
* add content property to site definition, similar to config
* allow ensure=>installed for sites -- required moving site installation code 
to a new definition.
* added apache2::debian and apache2::basic subclasses
* added `config` definition, similar to the existing `site` and `module` defs,
which will include given config snippets
* Removed port configuration (via /etc/apache2/ports.conf) -- Listen 
directives make more sense in the individual site definitions, at least for
SSL, load-balanced, and proxied environments...
* Removed DavidS' nagios and munin stuff; will probably re-add later.
* Removed the `no_default_site` subclass and made it the default behavior.  No
one _really_ wants to serve their distro's default page...
* Removed the `apache2_ssl business` -- with Listen configured in the site
defs themselves, it's not really necessary

puppet-apache2's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.