Mercurial > repos > other > Puppet
diff modules/python/manifests/venv/isolate.pp @ 0:956e484adc12
Initial public release of Puppet configs
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 16 Aug 2014 19:47:38 +0000 |
parents | |
children | 393acb5f672d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/python/manifests/venv/isolate.pp Sat Aug 16 19:47:38 2014 +0000 @@ -0,0 +1,63 @@ +define python::venv::isolate($ensure=present, + $version=latest, + $requirements=undef) { + $root = $name + $owner = $python::venv::owner + $group = $python::venv::group + $python = $python::dev::python + + if $ensure == 'present' { + # Parent directory of root directory. /var/www for /var/www/blog + $root_parent = inline_template("<%= root.match(%r!(.+)/.+!)[1] %>") + + if !defined(File[$root_parent]) { + file { $root_parent: + ensure => directory, + owner => $owner, + group => $group, + } + } + + Exec { + user => $owner, + group => $group, + cwd => "/tmp", + } + + # Does not successfully run as www-data on Debian: + exec { "python::venv $root": + command => "virtualenv -p `which ${python}` ${root}", + creates => $root, + notify => Exec["update distribute and pip in $root"], + require => [File[$root_parent], + Package["python-virtualenv"]], + } + + # Some newer Python packages require an updated distribute + # from the one that is in repos on most systems: + exec { "update distribute and pip in $root": + command => "$root/bin/pip install -U pip distribute", + refreshonly => true, + } + + if $requirements { + python::pip::requirements { $requirements: + venv => $root, + owner => $owner, + group => $group, + require => Exec["python::venv $root"], + } + } + + } elsif $ensure == 'absent' { + + file { $root: + ensure => $ensure, + owner => $owner, + group => $group, + recurse => true, + purge => true, + force => true, + } + } +}