Add puppet/archive module
[mirror/dsa-puppet.git] / 3rdparty / modules / archive / manifests / init.pp
diff --git a/3rdparty/modules/archive/manifests/init.pp b/3rdparty/modules/archive/manifests/init.pp
new file mode 100644 (file)
index 0000000..ea7001c
--- /dev/null
@@ -0,0 +1,66 @@
+# 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'],
+      }
+    }
+  }
+}