# Currently works on Ubuntu 12.04 # For other platforms modify the apt-get package names # suitably. Need root access for installation. # Copy into vagrant manifests directly to install # packages in a VM. define pip2($ensure = installed) { case $ensure { installed: { exec { "/usr/bin/pip install $name": path => "/usr/local/bin:/usr/bin:/bin", } } latest: { exec { "/usr/bin/pip install --upgrade $name": path => "/usr/local/bin:/usr/bin:/bin", } } default: { exec { "/usr/bin/pip install $name==$ensure": path => "/usr/local/bin:/usr/bin:/bin", } } } } define ez3($ensure = installed) { case $ensure { installed: { exec { "easy_install3 $name": path => "/usr/local/bin:/usr/bin:/bin", } } latest: { exec { "easy_install3 -U $name": path => "/usr/local/bin:/usr/bin:/bin", } } default: { exec { "easy_install3 $name==$ensure": path => "/usr/local/bin:/usr/bin:/bin", } } } } class multiverse { exec { "sed" : command => "sed -i \"/^# deb.*multiverse/ s/^# //\" /etc/apt/sources.list", path => "/bin", } } class apt { exec { "apt-update": command => "/usr/bin/apt-get update", } } class isce-giant { $baspack = ["subversion", #Make systems "scons", "build-essential", #Essentials "gfortran", "zlib1g", "zlib1g-dev", "libpng12-0", "libpng12-dev", "libopenjpeg2", "libopenjpeg-dev", "libfftw3-3", #Scientific "libfftw3-dev", "liblapack3gf", "libatlas3gf-base", "liblapack-dev", "libatlas-dev", "libxt-dev", #X11 "libxt6", "lesstif2-dev", "libx11-dev", "libhdf5-serial-dev", #Data formats "hdf5-tools", "libgrib-api-1.9.9", "libgrib-api-dev", "libgrib-api-tools", "gdal-bin", "libgeos-dev", "libgdal1-dev", "libproj-dev", "ffmpeg", #Others "tcl8.5", "tcl8.5-dev", "python-numpy", #Python 2 "python-scipy", "python2.7-dev", "python-setuptools", "python-distutils-extra", "cython", "python-matplotlib", "python-h5py", "python-pyproj", "python-mpltoolkits.basemap", "python-lxml", "python-pip", "python-requests", "ipython", "python-gdal", "python-netcdf", "python-pyshp", "python-shapely", "python3", #Python3 "python3-numpy", "python3-scipy", "python3-dev", "python3-setuptools", "python3-lxml", "ipython3", "python3-pyshp"] package { $baspack : ensure=>installed; } } class py-easy_install { exec { 'aptupdate': command => "apt-get update", path => "/usr/bin:/usr/local/bin", } ez3 {"distribute": ensure => latest, } ez3 {"pip": ensure => latest, } Exec["aptupdate"] -> Ez3["distribute"] -> Ez3["pip"] } class py2-pip{ $pypack = ["pygrib", "pywavelets", "pyresample", "pykml", "simplejson"] pip2 { $pypack : ensure=> installed} } class py3-ez { $py3pack = ["requests", "pygrib", "cython", "pykml", "simplejson", "h5py", "pyproj"] ez3 { $py3pack : ensure=>installed} ez3 { "matplotlib": ensure=>installed} ez3 { "basemap": } Ez3["matplotlib"] -> Ez3["basemap"] } #class modules-env { # exec {"install": # command => "/vagrant/scripts/install_modules.sh", # onlyif => "/usr/bin/test ! -f /usr/local/Modules", # } #} node default { stage { "zero": ; "one": ; "two": ; "three": ; "four": ; "five": ; # "six": ; } class { "multiverse": stage => "zero"; "apt": stage => "one"; "isce-giant": stage => "two"; "py-easy_install": stage => "three"; "py2-pip" : stage=>"four"; "py3-ez" : stage => "five"; # "modules-env": stage=> "six"; } Stage["zero"] -> Stage["one"] -> Stage["two"] -> Stage["three"] -> Stage["four"]->Stage["five"] # ->Stage["six"] }