Puppet 配置:安装 tarball

9

我想使用puppet recipe安装apache maven,但是我无法找到任何关于如何执行此操作的示例。请问能否提供帮助?Apache maven以tar.gz文件的形式打包。我正在使用独立设置进行puppet。

2个回答

11

我使用这个代码片段来自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"],    
      }
  }
}

示例用法:

#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"] ],
}

这个例子在我的电脑上出现了“urlfilename”错误。 - Jared
我只需执行 "puppet module install example42-puppi",然后使用第二个示例作为 "puppi::netinstall",就成功地使其工作了。 - Jared

0

有一个 Puppet 模块可以为您完成此工作:dsestero/download_uncompress

示例:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接