2012-07-04 14 views
9

Mi piacerebbe installare Apache Maven usando la ricetta puppet, ma non riesco a trovare da nessuna parte un esempio su come farlo. Qualcuno può aiutare con questo? Apache Maven è impacchettato come file tar.gz. Sto usando un setup stand-alone per puppet.ricetta burattino installazione tarball

risposta

11

Io uso questo frammento da 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"],  
     } 
    } 
} 

esempio di utilizzo:

#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

Questo esempio interrompe "urlfilename" per me. – Jared

+0

Sono riuscito a farlo funzionare semplicemente facendo "puppet module install example42-puppi" e usando solo il secondo esempio come "puppi :: netinstall" – Jared

0

c'è un modulo Puppet che fa questo lavoro per voi: dsestero/download_uncompress

Esempio:

$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', 
} 
Problemi correlati