123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # == Define: python::pip
- #
- # Installs and manages packages from pip.
- #
- # === Parameters
- #
- # [*ensure*]
- # present|absent. Default: present
- #
- # [*virtualenv*]
- # virtualenv to run pip in.
- #
- # [*url*]
- # URL to install from. Default: none
- #
- # [*owner*]
- # The owner of the virtualenv being manipulated. Default: root
- #
- # [*proxy*]
- # Proxy server to use for outbound connections. Default: none
- #
- # [*environment*]
- # Additional environment variables required to install the packages. Default: none
- #
- # === Examples
- #
- # python::pip { 'flask':
- # virtualenv => '/var/www/project1',
- # proxy => 'http://proxy.domain.com:3128',
- # }
- #
- # === Authors
- #
- # Sergey Stankevich
- # Fotis Gimian
- #
- define python::pip (
- $ensure = present,
- $virtualenv = 'system',
- $url = false,
- $owner = 'root',
- $proxy = false,
- $environment = []
- ) {
- # Parameter validation
- if ! $virtualenv {
- fail('python::pip: virtualenv parameter must not be empty')
- }
- if $virtualenv == 'system' and $owner != 'root' {
- fail('python::pip: root user must be used when virtualenv is system')
- }
- $cwd = $virtualenv ? {
- 'system' => '/',
- default => "${virtualenv}",
- }
- $pip_env = $virtualenv ? {
- 'system' => 'pip',
- default => "${virtualenv}/bin/pip",
- }
- $proxy_flag = $proxy ? {
- false => '',
- default => "--proxy=${proxy}",
- }
- $grep_regex = $name ? {
- /==/ => "^${name}\$",
- default => "^${name}==",
- }
- $source = $url ? {
- false => $name,
- default => "${url}#egg=${name}",
- }
- case $ensure {
- present: {
- exec { "pip_install_${name}":
- command => "$pip_env --log-file ${cwd}/pip.log install ${proxy_flag} ${source}",
- unless => "$pip_env freeze | grep -i -e ${grep_regex}",
- user => $owner,
- environment => $environment,
- }
- }
- default: {
- exec { "pip_uninstall_${name}":
- command => "echo y | $pip_env uninstall ${proxy_flag} ${name}",
- onlyif => "$pip_env freeze | grep -i -e ${grep_regex}",
- user => $owner,
- environment => $environment,
- }
- }
- }
- }
|