dev/provisioning/modules/puppi/manifests/install_packages.pp
changeset 28 b0b56e0f8c7f
equal deleted inserted replaced
27:a2342f26c9de 28:b0b56e0f8c7f
       
     1 # = Define: puppi::install_packages
       
     2 #
       
     3 # This define installs a list of packages without manging them as Puppet
       
     4 # resources. It's useful when you need a set of packages installed,
       
     5 # for example as prerequisites to build code from source, but you don't want
       
     6 # to create Puppet package resources for them (since they may conflict with
       
     7 # existing classes that provide the same packages.
       
     8 #
       
     9 # == Parameters:
       
    10 #
       
    11 # [*packages*]
       
    12 #   String. Required.
       
    13 #   A space separated list of of the packages to install
       
    14 #
       
    15 # [*template*]
       
    16 #   String. Optional. Default: 'puppi/install_packages.erb'
       
    17 #   The template to use to generate the script that installs the packages
       
    18 #
       
    19 # [*scrips_dir*]
       
    20 #   String. Optional. Default: '/root/puppi_install_packages'
       
    21 #    The directory where you place the scripts created by the define.
       
    22 #
       
    23 # [*autorun*]
       
    24 #   Boolean. Default: true.
       
    25 #   Define if to automatically execute the script when Puppet runs.
       
    26 #
       
    27 # [*refreshonly*]
       
    28 #   Boolean. Optional. Default: true
       
    29 #   Defines the logic of execution of the script when Puppet runs.
       
    30 #   Maps to the omonymous Exec type argument.
       
    31 #
       
    32 # [*timeout*]
       
    33 #   String. Optional. Default: '600'
       
    34 #   Exec timeout in seconds.
       
    35 #
       
    36 # [*ensure*]
       
    37 #   Define if the runscript script and eventual cron job
       
    38 #   must be present or absent. Default: present.
       
    39 #
       
    40 # == Examples
       
    41 #
       
    42 # - Minimal setup
       
    43 # puppi::install_packages { 'build_tools':
       
    44 #   source           => 'build-essential vim git-core curl bison',
       
    45 # }
       
    46 #
       
    47 define puppi::install_packages (
       
    48   $packages,
       
    49   $template         = 'puppi/install_packages.erb',
       
    50   $scripts_dir      = '/root/puppi_install_packages',
       
    51   $autorun          = true,
       
    52   $refreshonly      = true,
       
    53   $timeout          = '600',
       
    54   $ensure           = 'present' ) {
       
    55 
       
    56   if ! defined(File[$scripts_dir]) {
       
    57     file { $scripts_dir:
       
    58       ensure => directory,
       
    59       mode   => '0755',
       
    60       owner  => 'root',
       
    61       group  => 'root',
       
    62     }
       
    63   }
       
    64 
       
    65   file { "install_packages_${name}":
       
    66     ensure  => $ensure,
       
    67     path    => "${scripts_dir}/${name}",
       
    68     mode    => '0755',
       
    69     owner   => 'root',
       
    70     group   => 'root',
       
    71     content => template($template),
       
    72   }
       
    73 
       
    74   if $autorun == true {
       
    75     exec { "install_packages_${name}":
       
    76       command     => "${scripts_dir}/${name}",
       
    77       refreshonly => $refreshonly,
       
    78       subscribe   => File["install_packages_${name}"],
       
    79       timeout     => $timeout,
       
    80     }
       
    81   }
       
    82 
       
    83 }