--- /dev/null
+# Class: archive
+# ==============
+#
+# Manages archive modules dependencies.
+#
+# Parameters
+# ----------
+#
+# * seven_zip_name: 7zip package name.
+# * seven_zip_provider: 7zip package provider (accepts windows/chocolatey).
+# * seven_zip_source: alternative package source.
+# * aws_cli_install: install aws cli command (default: false).
+#
+# Examples
+# --------
+#
+# class { 'archive':
+# seven_zip_name => '7-Zip 9.20 (x64 edition)',
+# seven_zip_source => 'C:/Windows/Temp/7z920-x64.msi',
+# seven_zip_provider => 'windows',
+# }
+#
+class archive (
+ Optional[String] $seven_zip_name = $archive::params::seven_zip_name,
+ Optional[String] $seven_zip_provider = $archive::params::seven_zip_provider,
+ Optional[String] $seven_zip_source = undef,
+ Boolean $aws_cli_install = false,
+) inherits archive::params {
+
+ if $facts['os']['family'] == 'Windows' and !($seven_zip_provider in ['', undef]) {
+ package { '7zip':
+ ensure => present,
+ name => $seven_zip_name,
+ source => $seven_zip_source,
+ provider => $seven_zip_provider,
+ }
+ }
+
+ if $aws_cli_install {
+ # TODO: Windows support.
+ if $facts['os']['family'] != 'Windows' {
+ # Using bundled install option:
+ # http://docs.aws.amazon.com/cli/latest/userguide/installing.html#install-bundle-other-os
+
+ file { '/opt/awscli-bundle':
+ ensure => 'directory',
+ }
+
+ archive { 'awscli-bundle.zip':
+ ensure => present,
+ path => '/opt/awscli-bundle/awscli-bundle.zip',
+ source => 'https://s3.amazonaws.com/aws-cli/awscli-bundle.zip',
+ extract => true,
+ extract_path => '/opt',
+ creates => '/opt/awscli-bundle/install',
+ cleanup => true,
+ }
+
+ exec { 'install_aws_cli':
+ command => '/opt/awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws',
+ refreshonly => true,
+ subscribe => Archive['awscli-bundle.zip'],
+ }
+ }
+ }
+}