comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:956e484adc12
1 define python::venv::isolate($ensure=present,
2 $version=latest,
3 $requirements=undef) {
4 $root = $name
5 $owner = $python::venv::owner
6 $group = $python::venv::group
7 $python = $python::dev::python
8
9 if $ensure == 'present' {
10 # Parent directory of root directory. /var/www for /var/www/blog
11 $root_parent = inline_template("<%= root.match(%r!(.+)/.+!)[1] %>")
12
13 if !defined(File[$root_parent]) {
14 file { $root_parent:
15 ensure => directory,
16 owner => $owner,
17 group => $group,
18 }
19 }
20
21 Exec {
22 user => $owner,
23 group => $group,
24 cwd => "/tmp",
25 }
26
27 # Does not successfully run as www-data on Debian:
28 exec { "python::venv $root":
29 command => "virtualenv -p `which ${python}` ${root}",
30 creates => $root,
31 notify => Exec["update distribute and pip in $root"],
32 require => [File[$root_parent],
33 Package["python-virtualenv"]],
34 }
35
36 # Some newer Python packages require an updated distribute
37 # from the one that is in repos on most systems:
38 exec { "update distribute and pip in $root":
39 command => "$root/bin/pip install -U pip distribute",
40 refreshonly => true,
41 }
42
43 if $requirements {
44 python::pip::requirements { $requirements:
45 venv => $root,
46 owner => $owner,
47 group => $group,
48 require => Exec["python::venv $root"],
49 }
50 }
51
52 } elsif $ensure == 'absent' {
53
54 file { $root:
55 ensure => $ensure,
56 owner => $owner,
57 group => $group,
58 recurse => true,
59 purge => true,
60 force => true,
61 }
62 }
63 }