PuppetForge is a great repository to find and utilize required modules; however, sometimes you need to make some changes to satisfy your own requirements. In my case, I needed an ‘eJabberd’ module for Debian based machines. I found this useful module by Lee Boynton that worked very well in CentOS but apparently not in Debian/Ubuntu. Those who are familiar with eJabberd installation, know that it’s a bit tricky when it needs to use mySql as its storage and requires specific drivers, schema. I modified Lee’s module slightly and the proper mysql manifest is as follows. I have tested this in Debian Squeeze as well as Wheezy:
# Installs the native erlang mysql driver class ejabberd::mysql( $lib_dir = $ejabberd::params::lib_dir ) inherits ejabberd::params { if !defined(Package['git']) { package { 'git': ensure => installed, } } if !defined(Package['erlang-rebar']) { case $::osfamily { 'redhat': { package { 'erlang-rebar': ensure => installed, } } 'debian': { package { 'erlang': ensure => installed, } file { "/home/debs": ensure => directory } file { "/home/debs/rebar_2.0.0-5_amd64.deb": owner => root, group => root, mode => 644, ensure => present, source => "puppet:///modules/ejabberd/rebar_2.0.0-5_amd64.deb" } package { 'erlang-rebar': provider => dpkg, ensure => installed, source => "/home/debs/rebar_2.0.0-5_amd64.deb" } } } } vcsrepo { '/usr/local/src/mysql': ensure => latest, provider => git, source => 'https://github.com/processone/mysql.git', require => Package['git'], # use first version which is compatible with ejabberd 2.1.x revision => '967f3a0bb7' } exec { 'compile-mysql': command => '/usr/bin/rebar compile', creates => '/usr/local/src/mysql/ebin/mysql.beam', cwd => '/usr/local/src/mysql', environment => 'HOME=/root', require => [ Package['erlang-rebar'], Vcsrepo['/usr/local/src/mysql'], ] } file { "${lib_dir}/ebin/mysql.beam": ensure => present, source => '/usr/local/src/mysql/ebin/mysql.beam', require => Exec['compile-mysql'], } file { "${lib_dir}/ebin/mysql_auth.beam": ensure => present, source => '/usr/local/src/mysql/ebin/mysql_auth.beam', require => Exec['compile-mysql'], } file { "${lib_dir}/ebin/mysql_conn.beam": ensure => present, source => '/usr/local/src/mysql/ebin/mysql_conn.beam', require => Exec['compile-mysql'], } file { "${lib_dir}/ebin/mysql_recv.beam": ensure => present, source => '/usr/local/src/mysql/ebin/mysql_recv.beam', require => Exec['compile-mysql'], } }