puppet/python/manifests/init.pp

108 lines
2.5 KiB
Puppet

# Install python
#
class python {
package { "python":
ensure => installed,
notify => $::operatingsystem ? {
"openbsd" => Exec["python-links"],
default => undef,
},
}
exec { "python-links":
path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin",
command => "pkg_info python | egrep '^[ ]*ln -sf' | sh",
user => "root",
group => "wheel",
refreshonly => true,
}
}
# Install m2crypto module for python.
#
class python::m2crypto {
package { "m2crypto":
ensure => installed,
name => $::operatingsystem ? {
"debian" => "python-m2crypto",
"ubuntu" => "python-m2crypto",
default => "m2crypto",
}
}
}
# Install python software using setup.py.
#
# === Parameters
#
# $name:
# Source directory.
# $python:
# Python executable name. Defaults to python.
# $source:
# Source path to package archive.
#
# === Sample usage
#
# python::setup::install { "/usr/local/src/moin-1.8.8":
# source => "puppet:///files/packages/moin-1.8.8.tar.gz",
# }
#
define python::setup::install($python="python", $source="") {
if $source {
$filename = basename($source)
file { "/usr/local/src/${filename}":
ensure => present,
mode => "0644",
owner => "root",
group => $operatingsystem ? {
"openbsd" => "wheel",
default => "root",
},
source => $source,
}
util::extract::tar { $name:
ensure => latest,
strip => 1,
source => "/usr/local/src/${filename}",
require => File["/usr/local/src/${filename}"],
before => Exec["python-setup-install-${name}"],
}
}
exec { "python-setup-install-${name}":
path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin",
cwd => $name,
command => "/bin/sh -c 'umask 022; ${python} setup.py install'",
creates => "${name}/build",
}
}
# Compile python script into binary form.
#
# === Parameters
#
# $name:
# File name to compile.
#
# === Sample usage
#
# python::compile { "/usr/lib/python2.4/site-packages/dynldap.py": }
#
define python::compile() {
exec { "python -c \"import py_compile; py_compile.compile('${name}')\"":
path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin",
onlyif => "test '${name}' -nt '${name}c'",
}
}