Files
limetime/puppet/manifests/classes/python.pp

47 lines
1.3 KiB
Puppet

stage { 'pre': before => Stage['main'] }
class python {
package {
"build-essential": ensure => latest;
"python": ensure => latest;
"python-dev": ensure => latest;
"python-setuptools": ensure => installed;
"git-core": ensure => installed;
"mercurial": ensure => installed;
"libevent-dev": ensure => installed;
"libgeos-dev": ensure => installed;
}
exec {'pip-package':
command => 'easy_install pip',
path => '/usr/local/bin:/usr/bin:/bin',
require => Package['python-setuptools'],
subscribe => Package['python-setuptools'],
}
package {['virtualenv', 'virtualenvwrapper', 'gunicorn', 'gevent']:
ensure => latest,
provider => pip,
require => Exec['pip-package'],
}
}
class { 'python': stage => 'pre' }
define python::venv($path, $requirements) {
file {"$requirements":
ensure => present,
}
exec{"${name}-venv":
path => '/usr/local/bin:/usr/bin:/bin',
command => "virtualenv --system-site-packages ${path}",
creates => "${path}",
require => Package['virtualenv'],
}
exec {"${name}-requirements":
command => "/usr/bin/env bash -c 'source ${path}/bin/activate; pip install -i http://f.pypi.python.org/simple -r ${requirements}'",
require => Exec["${name}-venv"],
subscribe => File["$requirements"],
}
}