diff -r a2342f26c9de -r b0b56e0f8c7f dev/provisioning/modules/puppi/manifests/install_packages.pp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/provisioning/modules/puppi/manifests/install_packages.pp Fri Jan 15 15:35:00 2016 +0100 @@ -0,0 +1,83 @@ +# = Define: puppi::install_packages +# +# This define installs a list of packages without manging them as Puppet +# resources. It's useful when you need a set of packages installed, +# for example as prerequisites to build code from source, but you don't want +# to create Puppet package resources for them (since they may conflict with +# existing classes that provide the same packages. +# +# == Parameters: +# +# [*packages*] +# String. Required. +# A space separated list of of the packages to install +# +# [*template*] +# String. Optional. Default: 'puppi/install_packages.erb' +# The template to use to generate the script that installs the packages +# +# [*scrips_dir*] +# String. Optional. Default: '/root/puppi_install_packages' +# The directory where you place the scripts created by the define. +# +# [*autorun*] +# Boolean. Default: true. +# Define if to automatically execute the script when Puppet runs. +# +# [*refreshonly*] +# Boolean. Optional. Default: true +# Defines the logic of execution of the script when Puppet runs. +# Maps to the omonymous Exec type argument. +# +# [*timeout*] +# String. Optional. Default: '600' +# Exec timeout in seconds. +# +# [*ensure*] +# Define if the runscript script and eventual cron job +# must be present or absent. Default: present. +# +# == Examples +# +# - Minimal setup +# puppi::install_packages { 'build_tools': +# source => 'build-essential vim git-core curl bison', +# } +# +define puppi::install_packages ( + $packages, + $template = 'puppi/install_packages.erb', + $scripts_dir = '/root/puppi_install_packages', + $autorun = true, + $refreshonly = true, + $timeout = '600', + $ensure = 'present' ) { + + if ! defined(File[$scripts_dir]) { + file { $scripts_dir: + ensure => directory, + mode => '0755', + owner => 'root', + group => 'root', + } + } + + file { "install_packages_${name}": + ensure => $ensure, + path => "${scripts_dir}/${name}", + mode => '0755', + owner => 'root', + group => 'root', + content => template($template), + } + + if $autorun == true { + exec { "install_packages_${name}": + command => "${scripts_dir}/${name}", + refreshonly => $refreshonly, + subscribe => File["install_packages_${name}"], + timeout => $timeout, + } + } + +}