2012-07-04 14 views
9

Me gustaría instalar apache maven mediante el uso de la receta de marionetas, pero no puedo encontrar en ningún lugar un ejemplo sobre cómo hacer esto. ¿Alguien puede ayudar con esto? Apache maven está empaquetado como archivo tar.gz. Estoy usando una configuración independiente para marionetas.receta de marionetas instalando tarball

Respuesta

11

Puedo usar este fragmento de example42:

define netinstall (
    $url, 
    $extracted_dir, 
    $destination_dir, 
    $owner = "root", 
    $group = "root", 
    $work_dir = "/var/tmp", 
    $extract_command = "tar -zxvf", 
    $preextract_command = "", 
    $postextract_command = "" 
) { 
    $source_filename = urlfilename($url) 

    if $preextract_command { 
     exec { 
      "PreExtract $source_filename": 
       command => $preextract_command, 
       before => Exec["Extract $source_filename"], 
       refreshonly => true, 
     } 
    } 

    exec { 
     "Retrieve $url": 
      cwd  => "$work_dir", 
      command => "wget $url", 
      creates => "$work_dir/$source_filename", 
      timeout => 3600, 
    } 

    exec { 
     "Extract $source_filename": 
      command => "mkdir -p $destination_dir && cd $destination_dir && $extract_command $work_dir/$source_filename", 
      unless => "find $destination_dir | grep $extracted_dir", 
      creates => "${destination_dir}/${extracted_dir}", 
      require => Exec["Retrieve $url"], 
    } 

    if $postextract_command { 
     exec { 
      "PostExtract $source_filename": 
       command => $postextract_command, 
       cwd => "$destination_dir/$extracted_dir", 
       subscribe => Exec["Extract $source_filename"], 
       refreshonly => true, 
       timeout => 3600, 
       require => Exec["Retrieve $url"],  
     } 
    } 
} 

ejemplo de uso:

#Install prerequisites 
exec { "VPSMonPrerequisites": 
    command  => "yum install -y ${vpsmonitor::params::prerequisites}", 
    unless  => "rpm -qi ${vpsmonitor::params::prerequisites}", 
    timeout  => 3600, 
} 
#Install tgz from source url 
netinstall { vpsmonitor: 
    url     => "${vpsmonitor::params::source_url}", 
    extracted_dir  => "${vpsmonitor::params::extracted_dir}", 
    destination_dir  => "${vpsmonitor::params::destination_dir}", 
    postextract_command => "chown -R user. ${vpsmonitor::params::destination_dir}/${vpsmonitor::params::extracted_dir}", 
    require    => [ Exec["VPSMonPrerequisites"], User["user"] ], 
} 
+0

Este ejemplo se rompe en "urlfilename" para mí. – Jared

+0

Pude hacerlo funcionar simplemente haciendo "puppet module install example42-puppi" y simplemente usando el segundo ejemplo como "puppi :: netinstall" – Jared

0

hay un módulo de marionetas que hace este trabajo para usted: dsestero/download_uncompress

Ejemplo:

$phpstorm_version = '2017.2.1' 

download_uncompress { 'PhpStorm': 
    download_base_url => 'https://download.jetbrains.com/webide', 
    distribution_name => "PhpStorm-${phpstorm_version}.tar.gz", 
    dest_folder  => '/opt', 
    creates   => "/opt/phpstorm-${phpstorm_version}", 
    uncompress  => 'tar.gz', 
}