Installing Asterisk on Debian
This is mode for installing asterisk, libpri, zaptel and app_rxfax/app_txfax. It is very Debian specific, since it has to build the zaptel kernel module.
It also requires small ruby function to get the kernel version without the architecture for the linux-kbuild package.
$libdir/parser/functions/kernelversion.rb:
module Puppet::Parser::Functions
newfunction(:kernelversion, :type => :rvalue) do |args|
ka = lookupvar('kernelrelease').split('-')
ka[0]
end
end
modules/asterisk/manifests/init.pp:
class asterisk {
$kernelversion = kernelversion()
file { "/var/spool/asterisk/outgoing":
ensure => directory,
mode => "777",
require => Package["asterisk"],
}
file { "/var/spool/asterisk/sms":
ensure => directory,
mode => "777",
require => Package["asterisk"],
}
file { "/var/spool/asterisk/fax":
ensure => directory,
mode => "777",
require => Package["asterisk"],
}
file { "/usr/local/bin/email2fax":
mode => "755",
source => "puppet:///asterisk/fax/email2fax",
require => Package["asterisk-app-fax"],
}
file { "/usr/local/bin/mailfax":
mode => "755",
source => "puppet:///asterisk/fax/mailfax",
require => Package["asterisk-app-fax"],
}
file { "/etc/zaptel.conf":
mode => "644",
source => "puppet:///asterisk/zaptel.conf.$hostname",
notify => Exec["ztcfg"],
}
file { "/etc/asterisk":
mode => "644",
source => "puppet:///asterisk/asterisk",
recurse => true,
purge => true,
ignore => [ ".svn", "zapata*" ],
notify => Exec["asterisk reload"],
require => Package["asterisk"],
}
file { "/etc/asterisk/zapata.conf":
mode => "644",
source => "puppet:///asterisk/asterisk/zapata.conf.$hostname",
notify => Service["asterisk"],
}
mailalias { "fax":
ensure => present,
recipient => '|"/usr/bin/sudo /usr/local/bin/email2fax"',
require => [ Package["asterisk-app-fax"], File["/usr/local/bin/email2fax"] ],
notify => Exec["newaliases"],
}
exec { "m-a -q -t -l $kernelrelease a-i zaptel":
path => ["/bin", "/usr/bin", "/sbin", "/usr/sbin" ],
timeout => "600",
logoutput => err,
require => [ Package["zaptel-source"], Package["linux-headers-$kernelrelease"], Package["g++"], Package["libc6-dev"], Package["libstdc++6-dev"], Package["linux-kernel-headers"], Package["linux-kbuild-$kernelversion"], Package["build-essential"] ],
creates => "/lib/modules/$kernelrelease/misc/zaptel.ko",
}
exec { "ztcfg":
path => ["/sbin"],
refreshonly => true,
require => Package["zaptel"],
}
exec { "asterisk reload":
path => "/etc/init.d/",
refreshonly => true,
}
service { "asterisk": ensure => running, enable => true; }
package {
"sox": ensure => present;
"python": ensure => present;
"asterisk": ensure => present;
"festival": ensure => present;
"g++": ensure => present;
"libc6-dev": ensure => present;
"libstdc++6-dev": ensure => present;
"linux-kernel-headers": ensure => present;
"linux-kbuild-$kernelversion": ensure => present;
"linux-headers-$kernelrelease": ensure => present;
"build-essential": ensure => present;
"asterisk-app-fax": ensure => present;
"libpri1.0": ensure => present;
"zaptel": ensure => present;
"zaptel-source": ensure => present, notify => Exec["m-a -q -t -l $kernelrelease a-i zaptel"];
}
}
Please send comments and bug reports for this recipe to Martha Greenberg