81 lines
1.8 KiB
Puppet
81 lines
1.8 KiB
Puppet
if $python_values == undef { $python_values = hiera_hash('python', false) }
|
|
|
|
include puphpet::params
|
|
|
|
if hash_key_equals($python_values, 'install', 1) {
|
|
include pyenv::params
|
|
|
|
install_python_packages { 'foo':
|
|
before => Class['pyenv'],
|
|
}
|
|
|
|
class { 'pyenv':
|
|
manage_packages => false,
|
|
}
|
|
|
|
if count($python_values['versions']) > 0 {
|
|
create_resources(install_python, $python_values['versions'])
|
|
}
|
|
|
|
if count($python_values['packages']) > 0 {
|
|
each( $python_values['packages'] ) |$key, $package| {
|
|
$package_array = split($package, '@')
|
|
$package_name = $package_array[0]
|
|
|
|
if count($package_array) == 2 {
|
|
$package_ensure = $package_array[1]
|
|
} else {
|
|
$package_ensure = present
|
|
}
|
|
|
|
if ! defined(Package[$package_name]) {
|
|
package { $package_name:
|
|
ensure => $package_ensure,
|
|
provider => pip,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
define install_python (
|
|
$version,
|
|
$virtualenv = false,
|
|
) {
|
|
|
|
$install_virtualenv = value_true($virtualenv) ? {
|
|
true => true,
|
|
default => false,
|
|
}
|
|
|
|
if value_true($version) {
|
|
pyenv_python { $version:
|
|
keep => true,
|
|
virtualenv => $install_virtualenv,
|
|
ensure => present,
|
|
require => Class['pyenv'],
|
|
} ->
|
|
file { "python v${version} symlink":
|
|
ensure => link,
|
|
path => "/usr/bin/python${version}",
|
|
target => "/usr/local/pyenv/versions/${version}/bin/python",
|
|
} ->
|
|
file { "python v${version} virtualenv symlink":
|
|
ensure => link,
|
|
path => "/usr/bin/virtualenv-${version}",
|
|
target => "/usr/local/pyenv/versions/${version}/bin/virtualenv",
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
define install_python_packages {
|
|
each( $pyenv::params::python_build_packages ) |$key, $package| {
|
|
if ! defined(Package[$package]) {
|
|
package { $package:
|
|
ensure => present,
|
|
}
|
|
}
|
|
}
|
|
}
|