Puppet Class: cpanm

Defined in:
manifests/init.pp

Overview

Class: cpanm

Full description of class cpanm here.

Parameters


  • ‘mirror`

A CPAN mirror to use to retrieve App::cpanminus. This is passed to ‘cpanm` as `–from`, meaning that only this mirror will be used.

Examples


Authors


James McDonald <james@jamesmcdonald.com>

Copyright


Copyright 2016-2017 James McDonald, unless otherwise noted.

Examples:

include cpanm
class {'cpanm':
  mirror =>  'http://mirror.my.org/cpan/',
}

Parameters:

  • mirror (Any) (defaults to: undef)
  • lwpbootstraparg (Any) (defaults to: false)


34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'manifests/init.pp', line 34

class cpanm (
  $mirror          = undef,
  $lwpbootstraparg = false,
){
  if $::osfamily == 'RedHat' and $::operatingsystemmajrelease in ['6','7'] {
    $packages = ['perl', 'make', 'gcc', 'perl-core']
  } else {
    $packages = ['perl', 'make', 'gcc']
  }

  ensure_packages($packages, { 'ensure' => 'present'})

  file {'/var/cache/cpanm-install':
    ensure => file,
    source => 'puppet:///modules/cpanm/cpanm',
  }


  $from = $mirror ? {
    undef   => '',
    default => "--from ${mirror}",
  }

  if ($lwpbootstraparg) {
    $lwparg = '--no-lwp'
  } else {
    $lwparg = ''
  }

  exec {"/usr/bin/perl /var/cache/cpanm-install ${from} -n App::cpanminus ${lwparg}":
    unless  => '/usr/bin/test -x /usr/bin/cpanm -o -x /usr/local/bin/cpanm',
    require => [File['/var/cache/cpanm-install'], Package['perl', 'gcc']],
  }
}