# profiles::helpers::node_lookup # # wrapper class for python, pip and venv class profiles::helpers::node_lookup ( String $script_name = 'node_lookup', Stdlib::AbsolutePath $base_path = "/opt/${script_name}", Stdlib::AbsolutePath $venv_path = "${base_path}/venv", String $owner = 'root', String $group = 'root', Boolean $systempkgs = false, String $version = 'system', Array[String[1]] $packages = ['requests'], ){ if $::facts['python3_version'] { $python_version = $version ? { 'system' => $::facts['python3_version'], default => $version, } # ensure the base_path exists file { $base_path: ensure => directory, mode => '0755', owner => $owner, group => $group, } # create a venv python::pyvenv { $venv_path : ensure => present, version => $python_version, systempkgs => $systempkgs, venv_dir => $venv_path, owner => $owner, group => $group, require => File[$base_path], } # install the required pip packages $packages.each |String $package| { python::pip { "${venv_path}_${package}": ensure => present, pkgname => $package, virtualenv => $venv_path, } } # create the script from a template file { "${base_path}/${script_name}": ensure => file, mode => '0755', content => template("profiles/helpers/${script_name}.erb"), require => Python::Pyvenv[$venv_path], } # create symbolic link in $PATH file { "/usr/local/bin/${script_name}": ensure => 'link', target => "${base_path}/${script_name}", require => File["${base_path}/${script_name}"], } } }