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 Writing Your Own Functions 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