Add puppet/archive module, required for newer puppet/rabbitmq
[mirror/dsa-puppet.git] / 3rdparty / modules / archive / manifests / init.pp
1 # Class: archive
2 # ==============
3 #
4 # Manages archive modules dependencies.
5 #
6 # Parameters
7 # ----------
8 #
9 # * seven_zip_name: 7zip package name.
10 # * seven_zip_provider: 7zip package provider (accepts windows/chocolatey).
11 # * seven_zip_source: alternative package source.
12 # * aws_cli_install: install aws cli command (default: false).
13 #
14 # Examples
15 # --------
16 #
17 # class { 'archive':
18 #   seven_zip_name     => '7-Zip 9.20 (x64 edition)',
19 #   seven_zip_source   => 'C:/Windows/Temp/7z920-x64.msi',
20 #   seven_zip_provider => 'windows',
21 # }
22 #
23 class archive (
24   Optional[String] $seven_zip_name     = $archive::params::seven_zip_name,
25   Optional[String] $seven_zip_provider = $archive::params::seven_zip_provider,
26   Optional[String] $seven_zip_source   = undef,
27   Boolean          $aws_cli_install    = false,
28 ) inherits archive::params {
29
30   if $facts['os']['family'] == 'Windows' and !($seven_zip_provider in ['', undef]) {
31     package { '7zip':
32       ensure   => present,
33       name     => $seven_zip_name,
34       source   => $seven_zip_source,
35       provider => $seven_zip_provider,
36     }
37   }
38
39   if $aws_cli_install {
40     # TODO: Windows support.
41     if $facts['os']['family'] != 'Windows' {
42       # Using bundled install option:
43       # http://docs.aws.amazon.com/cli/latest/userguide/installing.html#install-bundle-other-os
44
45       file { '/opt/awscli-bundle':
46         ensure => 'directory',
47       }
48
49       archive { 'awscli-bundle.zip':
50         ensure       => present,
51         path         =>  '/opt/awscli-bundle/awscli-bundle.zip',
52         source       => 'https://s3.amazonaws.com/aws-cli/awscli-bundle.zip',
53         extract      => true,
54         extract_path => '/opt',
55         creates      => '/opt/awscli-bundle/install',
56         cleanup      => true,
57       }
58
59       exec { 'install_aws_cli':
60         command     => '/opt/awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws',
61         refreshonly => true,
62         subscribe   => Archive['awscli-bundle.zip'],
63       }
64     }
65   }
66 }