Puppet Class: cpanm

Defined in:
manifests/init.pp

Summary

Downloads and installs cpanminus.

Overview

Examples:

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

Parameters:

  • installer (Cpanm::HTTPUrl) (defaults to: 'https://cpanmin.us')

    Url to the cpanm installer.

  • manage_dependencies (Boolean) (defaults to: true)

    Wether this module should manage the following dependencies

    • purl

    • purl-core (rhel7)

    • make

    • gcc

  • mirror (Optional[Cpanm::HTTPUrl]) (defaults to: undef)

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

  • lwpbootstraparg (Boolean) (defaults to: false)

    cpanminus bootstrap arguments

Author:

  • James McDonald <james@jamesmcdonald.com>



31
32
33
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
# File 'manifests/init.pp', line 31

class cpanm (
  Cpanm::HTTPUrl $installer = 'https://cpanmin.us',
  Boolean $manage_dependencies = true,
  Optional[Cpanm::HTTPUrl] $mirror = undef,
  Boolean $lwpbootstraparg = false,
) {
  if $facts['os']['family'] == 'RedHat' and $facts['os']['release']['major'] < '8' {
    $packages = ['perl', 'make', 'gcc', 'perl-core']
  } else {
    $packages = ['perl', 'make', 'gcc']
  }

  if $manage_dependencies {
    package { $packages:
      before => Exec['install cpanminus'],
    }
  }

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

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

  exec { 'install cpanminus':
    command => "/usr/bin/curl -L ${installer} | /usr/bin/perl - ${from} -n App::cpanminus ${lwparg}",
    unless  => '/usr/bin/test -x /usr/bin/cpanm -o -x /usr/local/bin/cpanm',
  }
}