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)?

(gracylayla) #2

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


  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.



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': }