Puppet script to install Piwik on dedicated server?

Hi all,

I want to create a puppet script to install Piwik on a dedicated server. I have never used puppet before, and the puppet-piwik module on github is not of much help…

For one, it’s supposed to work on a virtual machine (the docs are all about setting up a virtual box); I created a virtual box to play with, but I need it on a real server.

Then, nowhere does it say what to do with the module… “git clone” it - OK… what next? The docs say to see Readme. Readme says:


Simple Example:

Exec {
  path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
}

class { 'piwik': }
piwik::apache { 'apache.piwik': }

Er… all right… what do I do with this? Where do I write it, and how do I run it? How do I set up my own environment? E.g., I am on a CentOS server (so - I want yum, not apt), I want to set up my own server name etc.

Also, after the environment is set up, how do I install Piwik? I mean not just pull the files from git, but run the install and create an admin user with an auth token I already know (which is being used on another server to import data through the API)?

A puppet module to easily deploy piwik. Make sure you have a correct php5 installation. This module only downloads the latest piwik archive and extracts it to a given path.

You may have to install php5-fpm (via puppet-php) and configure your web server (maybe with a puppet nginx module).

Suggested Preparation

This module is as simple as possible. You should be able to choose your own php installation.

  1. First I install the nodes/php module.
puppet module install nodes/php
  1. Using this module I install the necessary php packages. For serving php I use php-fpm with nginx.
class { 'php::extension::mysql': }
class { 'php::extension::mcrypt': }
class { 'php::extension::gd': }
class { 'php::fpm::daemon':
  ensure => running
}
  1. Then I install piwik.

  2. At last you may set up your vhost. This is depending on the server module you are using. I use my nginx fork

Usage

  class { 'piwik':
    path => "/srv/piwik",
    user => "www-data",
  }

Please note: After the first installation you have to initialize piwik by bootstrapping the database. For this use the setup gui in your browser according to the piwik installation manual.

Plugins

LoginLdap

LoginLdap is a plugin to enable ldap authentication.

Just make sure you have php-ldap installed. Either via a puppet module like nodes/php or via the package resource.

Then use:

  class { 'piwik::plugins::loginldap': }