diff --git a/.fixtures.yml b/.fixtures.yml index eff67f4..5c237af 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -1,3 +1,6 @@ fixtures: + repositories: + 'apt' : 'git://github.com/puppetlabs/puppetlabs-apt' + 'stdlib' : 'git://github.com/puppetlabs/puppetlabs-stdlib' symlinks: 'openstack_extras': "#{source_dir}" diff --git a/Rakefile b/Rakefile index 67e846c..0097908 100644 --- a/Rakefile +++ b/Rakefile @@ -4,4 +4,6 @@ require 'puppet-lint/tasks/puppet-lint' PuppetLint.configuration.fail_on_warnings = true PuppetLint.configuration.send('disable_80chars') -PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"] +PuppetLint.configuration.send('disable_double_quoted_strings') +PuppetLint.configuration.send('disable_class_inherits_from_params_class') +PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp", "examples/**/*.pp", "vendor/**/*.pp"] diff --git a/examples/redhat_repo.yaml b/examples/redhat_repo.yaml new file mode 100644 index 0000000..d542b99 --- /dev/null +++ b/examples/redhat_repo.yaml @@ -0,0 +1,33 @@ +# This is an example of how to define your own repos in hiera +# in addition to RDO when using the redhat repo class +# assuming you have included the class somewhere +# +# This is taken from the aptira hiera data files in +# puppet_openstack_builder and may go out of date. +# +# Set up repositories using openstack_extras +openstack_extras::repo::redhat::redhat::repo_hash: + 'CentOS-Base': + 'descr': 'CentOS-$releasever - Base' + 'baseurl': "%{hiera('yum_base_mirror')}/$releasever/os/$basearch/" + 'CentOS-Updates': + 'descr': 'CentOS-$releasever - Updates' + 'baseurl': "%{hiera('yum_base_mirror')}/$releasever/updates/$basearch/" + 'CentOS-Extras': + 'descr': 'CentOS-$releasever - Extras' + 'baseurl': "%{hiera('yum_base_mirror')}/$releasever/extras/$basearch/" + 'epel': + 'descr': 'Extra Packages for Enterprise Linux 6 - $basearch' + 'baseurl': "%{hiera('yum_epel_mirror')}/$releasever/$basearch/" + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6' + 'failovermethod': 'priority' + +openstack_extras::repo::redhat::redhat::repo_defaults: + 'proxy': "http://%{hiera('proxy_host')}:%{hiera('proxy_port')}" + +openstack_extras::repo::redhat::redhat::gpgkey_hash: + '/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6': + 'source': 'puppet:///modules/openstack_extras/RPM-GPG-KEY-EPEL-6' + +openstack_extras::repo::redhat::redhat::purge_unmanaged: true +openstack_extras::repo::redhat::redhat::package_require: true diff --git a/files/RPM-GPG-KEY-EPEL-6 b/files/RPM-GPG-KEY-EPEL-6 new file mode 100644 index 0000000..7a20304 --- /dev/null +++ b/files/RPM-GPG-KEY-EPEL-6 @@ -0,0 +1,29 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.5 (GNU/Linux) + +mQINBEvSKUIBEADLGnUj24ZVKW7liFN/JA5CgtzlNnKs7sBg7fVbNWryiE3URbn1 +JXvrdwHtkKyY96/ifZ1Ld3lE2gOF61bGZ2CWwJNee76Sp9Z+isP8RQXbG5jwj/4B +M9HK7phktqFVJ8VbY2jfTjcfxRvGM8YBwXF8hx0CDZURAjvf1xRSQJ7iAo58qcHn +XtxOAvQmAbR9z6Q/h/D+Y/PhoIJp1OV4VNHCbCs9M7HUVBpgC53PDcTUQuwcgeY6 +pQgo9eT1eLNSZVrJ5Bctivl1UcD6P6CIGkkeT2gNhqindRPngUXGXW7Qzoefe+fV +QqJSm7Tq2q9oqVZ46J964waCRItRySpuW5dxZO34WM6wsw2BP2MlACbH4l3luqtp +Xo3Bvfnk+HAFH3HcMuwdaulxv7zYKXCfNoSfgrpEfo2Ex4Im/I3WdtwME/Gbnwdq +3VJzgAxLVFhczDHwNkjmIdPAlNJ9/ixRjip4dgZtW8VcBCrNoL+LhDrIfjvnLdRu +vBHy9P3sCF7FZycaHlMWP6RiLtHnEMGcbZ8QpQHi2dReU1wyr9QgguGU+jqSXYar +1yEcsdRGasppNIZ8+Qawbm/a4doT10TEtPArhSoHlwbvqTDYjtfV92lC/2iwgO6g +YgG9XrO4V8dV39Ffm7oLFfvTbg5mv4Q/E6AWo/gkjmtxkculbyAvjFtYAQARAQAB +tCFFUEVMICg2KSA8ZXBlbEBmZWRvcmFwcm9qZWN0Lm9yZz6JAjYEEwECACAFAkvS +KUICGw8GCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRA7Sd8qBgi4lR/GD/wLGPv9 +qO39eyb9NlrwfKdUEo1tHxKdrhNz+XYrO4yVDTBZRPSuvL2yaoeSIhQOKhNPfEgT +9mdsbsgcfmoHxmGVcn+lbheWsSvcgrXuz0gLt8TGGKGGROAoLXpuUsb1HNtKEOwP +Q4z1uQ2nOz5hLRyDOV0I2LwYV8BjGIjBKUMFEUxFTsL7XOZkrAg/WbTH2PW3hrfS +WtcRA7EYonI3B80d39ffws7SmyKbS5PmZjqOPuTvV2F0tMhKIhncBwoojWZPExft +HpKhzKVh8fdDO/3P1y1Fk3Cin8UbCO9MWMFNR27fVzCANlEPljsHA+3Ez4F7uboF +p0OOEov4Yyi4BEbgqZnthTG4ub9nyiupIZ3ckPHr3nVcDUGcL6lQD/nkmNVIeLYP +x1uHPOSlWfuojAYgzRH6LL7Idg4FHHBA0to7FW8dQXFIOyNiJFAOT2j8P5+tVdq8 +wB0PDSH8yRpn4HdJ9RYquau4OkjluxOWf0uRaS//SUcCZh+1/KBEOmcvBHYRZA5J +l/nakCgxGb2paQOzqqpOcHKvlyLuzO5uybMXaipLExTGJXBlXrbbASfXa/yGYSAG +iVrGz9CE6676dMlm8F+s3XXE13QZrXmjloc6jwOljnfAkjTGXjiB7OULESed96MR +XtfLk0W5Ab9pd7tKDR6QHI7rgHXfCopRnZ2VVQ== +=V/6I +-----END PGP PUBLIC KEY BLOCK----- diff --git a/files/RPM-GPG-KEY-EPEL-7 b/files/RPM-GPG-KEY-EPEL-7 new file mode 100644 index 0000000..f205ede --- /dev/null +++ b/files/RPM-GPG-KEY-EPEL-7 @@ -0,0 +1,29 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.11 (GNU/Linux) + +mQINBFKuaIQBEAC1UphXwMqCAarPUH/ZsOFslabeTVO2pDk5YnO96f+rgZB7xArB +OSeQk7B90iqSJ85/c72OAn4OXYvT63gfCeXpJs5M7emXkPsNQWWSju99lW+AqSNm +jYWhmRlLRGl0OO7gIwj776dIXvcMNFlzSPj00N2xAqjMbjlnV2n2abAE5gq6VpqP +vFXVyfrVa/ualogDVmf6h2t4Rdpifq8qTHsHFU3xpCz+T6/dGWKGQ42ZQfTaLnDM +jToAsmY0AyevkIbX6iZVtzGvanYpPcWW4X0RDPcpqfFNZk643xI4lsZ+Y2Er9Yu5 +S/8x0ly+tmmIokaE0wwbdUu740YTZjCesroYWiRg5zuQ2xfKxJoV5E+Eh+tYwGDJ +n6HfWhRgnudRRwvuJ45ztYVtKulKw8QQpd2STWrcQQDJaRWmnMooX/PATTjCBExB +9dkz38Druvk7IkHMtsIqlkAOQMdsX1d3Tov6BE2XDjIG0zFxLduJGbVwc/6rIc95 +T055j36Ez0HrjxdpTGOOHxRqMK5m9flFbaxxtDnS7w77WqzW7HjFrD0VeTx2vnjj +GqchHEQpfDpFOzb8LTFhgYidyRNUflQY35WLOzLNV+pV3eQ3Jg11UFwelSNLqfQf +uFRGc+zcwkNjHh5yPvm9odR1BIfqJ6sKGPGbtPNXo7ERMRypWyRz0zi0twARAQAB +tChGZWRvcmEgRVBFTCAoNykgPGVwZWxAZmVkb3JhcHJvamVjdC5vcmc+iQI4BBMB +AgAiBQJSrmiEAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBqL66iNSxk +5cfGD/4spqpsTjtDM7qpytKLHKruZtvuWiqt5RfvT9ww9GUUFMZ4ZZGX4nUXg49q +ixDLayWR8ddG/s5kyOi3C0uX/6inzaYyRg+Bh70brqKUK14F1BrrPi29eaKfG+Gu +MFtXdBG2a7OtPmw3yuKmq9Epv6B0mP6E5KSdvSRSqJWtGcA6wRS/wDzXJENHp5re +9Ism3CYydpy0GLRA5wo4fPB5uLdUhLEUDvh2KK//fMjja3o0L+SNz8N0aDZyn5Ax +CU9RB3EHcTecFgoy5umRj99BZrebR1NO+4gBrivIfdvD4fJNfNBHXwhSH9ACGCNv +HnXVjHQF9iHWApKkRIeh8Fr2n5dtfJEF7SEX8GbX7FbsWo29kXMrVgNqHNyDnfAB +VoPubgQdtJZJkVZAkaHrMu8AytwT62Q4eNqmJI1aWbZQNI5jWYqc6RKuCK6/F99q +thFT9gJO17+yRuL6Uv2/vgzVR1RGdwVLKwlUjGPAjYflpCQwWMAASxiv9uPyYPHc +ErSrbRG0wjIfAR3vus1OSOx3xZHZpXFfmQTsDP7zVROLzV98R3JwFAxJ4/xqeON4 +vCPFU6OsT3lWQ8w7il5ohY95wmujfr6lk89kEzJdOTzcn7DBbUru33CQMGKZ3Evt +RjsC7FDbL017qxS+ZVA/HGkyfiu4cpgV8VUnbql5eAZ+1Ll6Dw== +=hdPa +-----END PGP PUBLIC KEY BLOCK----- diff --git a/files/RPM-GPG-KEY-RDO-Havana b/files/RPM-GPG-KEY-RDO-Havana new file mode 100644 index 0000000..59a2a5a --- /dev/null +++ b/files/RPM-GPG-KEY-RDO-Havana @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.11 (GNU/Linux) + +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 +WRhdyg== +=3A9V +-----END PGP PUBLIC KEY BLOCK----- diff --git a/files/RPM-GPG-KEY-RDO-Juno b/files/RPM-GPG-KEY-RDO-Juno new file mode 100644 index 0000000..17970c6 --- /dev/null +++ b/files/RPM-GPG-KEY-RDO-Juno @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +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 +tqA= +=vBYB +-----END PGP PUBLIC KEY BLOCK----- diff --git a/lib/puppet/parser/functions/validate_yum_hash.rb b/lib/puppet/parser/functions/validate_yum_hash.rb new file mode 100644 index 0000000..ea5cc77 --- /dev/null +++ b/lib/puppet/parser/functions/validate_yum_hash.rb @@ -0,0 +1,59 @@ +module Puppet::Parser::Functions + + yumrepo_arguments = [ + 'name', + 'ensure', + 'baseurl', + 'cost', + 'descr', + 'enabled', + 'enablegroups', + 'exclude', + 'failovermethod', + 'gpgcheck', + 'gpgkey', + 'http_caching', + 'include', + 'includepkgs', + 'keepalive', + 'metadata_expire', + 'metalink', + 'mirrorlist', + 'priority', + 'protect', + 'provider', + 'proxy', + 'proxy_password', + 'proxy_username', + 'repo_gpgcheck', + 's3_enabled', + 'skip_if_unavailable', + 'sslcacert', + 'sslclientcert', + 'sslclientkey', + 'sslverify', + 'target', + 'timeout' + ] + + newfunction(:validate_yum_hash) do |args| + if args.size > 1 + raise Puppet::Error, "validate_yum_hash takes only a single argument, #{args.size} provided" + end + arg = args[0] + + if not arg.kind_of?(Hash) + raise Puppet::Error, "non-hash argument provided to validate_yum_hash" + end + + if arg.size > 0 + arg.each do |title, params| + params.each do |param, value| + if ! yumrepo_arguments.include?(param) + raise Puppet::Error, "Parameter #{param} is not valid for the yumrepo type" + end + end + end + end + end +end diff --git a/manifests/repo/debian/debian.pp b/manifests/repo/debian/debian.pp new file mode 100644 index 0000000..2204dc8 --- /dev/null +++ b/manifests/repo/debian/debian.pp @@ -0,0 +1,59 @@ +# == Class: openstack_extras::repo::debian::debian +# +# This repo sets up apt sources for use with the debian +# osfamily and debian operatingsystem +# +# === Parameters: +# +# [*release*] +# (optional) The OpenStack release to add a +# Debian Wheezy apt source for. +# Defaults to 'icehouse' +# +# [*manage_whz*] +# (optional) Whether or not to add the default +# Debian Wheezy APT source +# Defaults to true +# +# [*source_hash*] +# (optional) A hash of apt::source resources to +# create and manage +# Defaults to {} +# +# [*source_defaults*] +# (optional) A hash of defaults to use for all apt::source +# resources created by this class +# Defaults to {} +# +# [*package_require*] +# (optional) Whether or not to run 'apt-get update' before +# installing any packages. +# Defaults to false +# +class openstack_extras::repo::debian::debian( + $release = $::openstack_extras::repo::debian::params::release, + $manage_whz = true, + $source_hash = {}, + $source_defaults = {}, + $package_require = false +) inherits openstack_extras::repo::debian::params { + if $manage_whz { + apt::source { $::openstack_extras::repo::debian::params::whz_name: + location => $::openstack_extras::repo::debian::params::whz_location, + release => $release, + repos => $::openstack_extras::repo::debian::params::whz_repos, + required_packages => $::openstack_extras::repo::debian::params::whz_required_packages + } -> + apt::source { "${::openstack_extras::repo::debian::params::whz_name}_backports": + location => $::openstack_extras::repo::debian::params::whz_location, + release => "${release}-backports", + repos => $::openstack_extras::repo::debian::params::whz_repos, + } + } + + create_resources('apt::source', $source_hash, $source_defaults) + + if $package_require { + Exec['apt_update'] -> Package<||> + } +} diff --git a/manifests/repo/debian/params.pp b/manifests/repo/debian/params.pp new file mode 100644 index 0000000..7373227 --- /dev/null +++ b/manifests/repo/debian/params.pp @@ -0,0 +1,18 @@ +# == Class: openstack_extras::repo::debian::params +# +# This repo sets defaults for the debian osfamily +# +class openstack_extras::repo::debian::params +{ + $release = 'icehouse' + + $uca_name = 'ubuntu-cloud-archive' + $uca_location = 'http://ubuntu-cloud.archive.canonical.com/ubuntu' + $uca_repos = 'main' + $uca_required_packages = 'ubuntu-cloud-keyring' + + $whz_name = 'debian_wheezy' + $whz_location = 'http://archive.gplhost.com/debian' + $whz_repos = 'main' + $whz_required_packages = 'gplhost-archive-keyring' +} diff --git a/manifests/repo/debian/ubuntu.pp b/manifests/repo/debian/ubuntu.pp new file mode 100644 index 0000000..41726b7 --- /dev/null +++ b/manifests/repo/debian/ubuntu.pp @@ -0,0 +1,54 @@ +# == Class: openstack_extras::repo::debian::ubuntu +# +# This repo sets up apt sources for use with the debian +# osfamily and ubuntu operatingsystem +# +# === Parameters: +# +# [*release*] +# (optional) The OpenStack release to add an +# Ubuntu Cloud Archive APT source for. +# Defaults to 'icehouse' +# +# [*manage_uca*] +# (optional) Whether or not to add the default +# Ubuntu Cloud Archive APT source +# Defaults to true +# +# [*source_hash*] +# (optional) A hash of apt::source resources to +# create and manage +# Defaults to {} +# +# [*source_defaults*] +# (optional) A hash of defaults to use for all apt::source +# resources created by this class +# Defaults to {} +# +# [*package_require*] +# (optional) Whether or not to run 'apt-get update' before +# installing any packages. +# Defaults to false +# +class openstack_extras::repo::debian::ubuntu( + $release = $::openstack_extras::repo::debian::params::release, + $manage_uca = true, + $source_hash = {}, + $source_defaults = {}, + $package_require = false +) inherits openstack_extras::repo::debian::params { + if $manage_uca { + apt::source { $::openstack_extras::repo::debian::params::uca_name: + location => $::openstack_extras::repo::debian::params::uca_location, + release => "${::lsbdistcodename}-updates/${release}", + repos => $::openstack_extras::repo::debian::params::uca_repos, + required_packages => $::openstack_extras::repo::debian::params::uca_required_packages + } + } + + create_resources('apt::source', $source_hash, $source_defaults) + + if $package_require { + Exec['apt_update'] -> Package<||> + } +} diff --git a/manifests/repo/redhat/params.pp b/manifests/repo/redhat/params.pp new file mode 100644 index 0000000..ece8e62 --- /dev/null +++ b/manifests/repo/redhat/params.pp @@ -0,0 +1,32 @@ +# == Class: openstack_extras::repo::redhat::params +# +# This repo sets defaults for use with the redhat +# osfamily repo classes. +# +class openstack_extras::repo::redhat::params +{ + $release = 'juno' + + $repo_defaults = { 'enabled' => '1', + 'gpgcheck' => '1', + 'notify' => "Exec[yum_refresh]", + 'mirrorlist' => 'absent', + 'require' => "Anchor[openstack_extras_redhat]" + } + + $gpgkey_defaults = { 'owner' => 'root', + 'group' => 'root', + 'mode' => '0644', + 'before' => "Anchor[openstack_extras_redhat]" + } + + case $::operatingsystem { + centos, redhat, scientific, slc: { $dist = 'epel' } + fedora: { $dist = 'fedora' } + default: { + warning('Unrecognised operatingsystem') + } + } + + $rdo_priority = 98 +} diff --git a/manifests/repo/redhat/redhat.pp b/manifests/repo/redhat/redhat.pp new file mode 100644 index 0000000..303e7e2 --- /dev/null +++ b/manifests/repo/redhat/redhat.pp @@ -0,0 +1,134 @@ +# == Class: openstack_extras::repo::redhat::redhat +# +# This repo sets up yum repos for use with the redhat +# osfamily and redhat operatingsystem. +# +# === Parameters: +# +# [*release*] +# (optional) The openstack release to use if managing rdo +# Defaults to $::openstack_extras::repo::redhat::params::release +# +# [*manage_rdo*] +# (optional) Whether to create a predefined yumrepo resource +# for the RDO OpenStack repository provided by RedHat +# Defaults to true +# +# [*repo_hash*] +# (optional) A hash of yumrepo resources that will be passed to +# create_resource. See examples folder for some useful examples. +# Defaults to {} +# +# [*repo_defaults*] +# (optional) The defaults for the yumrepo resources that will be +# created using create_resource. +# Defaults to $::openstack_extras::repo::redhat::params::repo_defaults +# +# [*gpgkey_hash*] +# (optional) A hash of file resources that will be passed to +# create_resource. See examples folder for some useful examples. +# Defaults to {} +# +# [*gpgkey_defaults*] +# (optional) The default resource attributes to +# create gpgkeys with. +# Defaults to $::openstack_extras::repo::redhat::params::gpgkey_defaults +# +# [*purge_unmanaged*] +# (optional) Purge the yum.repos.d directory of +# all repositories not managed by Puppet +# Defaults to false +# +# [*package_require*] +# (optional) Set all packages to require all +# yumrepos be set. +# Defaults to false +# +class openstack_extras::repo::redhat::redhat( + $release = $::openstack_extras::repo::redhat::params::release, + $manage_rdo = true, + $manage_epel = true, + $repo_hash = {}, + $repo_defaults = {}, + $gpgkey_hash = {}, + $gpgkey_defaults = {}, + $purge_unmanaged = false, + $package_require = false +) inherits openstack_extras::repo::redhat::params { + + validate_string($release) + validate_bool($manage_rdo) + validate_bool($manage_epel) + validate_hash($repo_hash) + validate_hash($repo_defaults) + validate_hash($gpgkey_hash) + validate_hash($gpgkey_defaults) + validate_bool($purge_unmanaged) + validate_bool($package_require) + + $_repo_defaults = merge($::openstack_extras::repo::redhat::params::repo_defaults, $repo_defaults) + $_gpgkey_defaults = merge($::openstack_extras::repo::redhat::params::gpgkey_defaults, $gpgkey_defaults) + + anchor { 'openstack_extras_redhat': } + + if $manage_rdo { + $release_cap = capitalize($release) + $_dist = $::openstack_extras::repo::redhat::params::dist + + $rdo_hash = { 'rdo-release' => { + 'baseurl' => "http://repos.fedorapeople.org/repos/openstack/openstack-${release}/${_dist}-${::operatingsystemmajrelease}/", + 'descr' => "OpenStack ${release_cap} Repository", + 'priority' => $::openstack_extras::repo::redhat::params::rdo_priority, + 'gpgkey' => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-${release_cap}", + } + } + + $rdokey_hash = { "/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-${release_cap}" => { + 'source' => "puppet:///modules/openstack_extras/RPM-GPG-KEY-RDO-${release_cap}" + } + } + + create_resources('file', $rdokey_hash, $_gpgkey_defaults) + create_resources('yumrepo', $rdo_hash, $_repo_defaults) + } + + if $manage_epel { + if ($::osfamily == 'RedHat' and + $::operatingsystem != 'Fedora') + { + $epel_hash = { 'epel' => { + 'baseurl' => "https://download.fedoraproject.org/pub/epel/${::operatingsystemmajrelease}/\$basearch", + 'descr' => "Extra Packages for Enterprise Linux ${::operatingsystemmajrelease} - \$basearch", + 'gpgkey' => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-${::operatingsystemmajrelease}", + 'failovermethod' => 'priority' + } + } + + $epelkey_hash = { "/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-${::operatingsystemmajrelease}" => { + 'source' => "puppet:///modules/openstack_extras/RPM-GPG-KEY-EPEL-${::operatingsystemmajrelease}" + } + } + + create_resources('file', $epelkey_hash, $_gpgkey_defaults) + create_resources('yumrepo', $epel_hash, $_repo_defaults) + } + } + + validate_yum_hash($repo_hash) + create_resources('yumrepo', $repo_hash, $_repo_defaults) + create_resources('file', $gpgkey_hash, $_gpgkey_defaults) + + if ((versioncmp($::puppetversion, '3.5') > 0) and $purge_unmanaged) { + resources { 'yumrepo': purge => true } + } + + if $package_require { + Yumrepo<||> -> Package<||> + } + + exec { 'yum_refresh': + command => '/usr/bin/yum clean all', + refreshonly => true, + } -> Package <||> +} + diff --git a/spec/classes/openstack_extras_repo_debian_debian_spec.rb b/spec/classes/openstack_extras_repo_debian_debian_spec.rb new file mode 100644 index 0000000..e38fff2 --- /dev/null +++ b/spec/classes/openstack_extras_repo_debian_debian_spec.rb @@ -0,0 +1,132 @@ +require 'spec_helper' + +describe 'openstack_extras::repo::debian::debian' do + let :class_params do + { + :manage_whz => true, + :source_hash => {}, + :source_defaults => {}, + :package_require => false + } + end + + let :paramclass_defaults do + { + :release => 'icehouse' + } + end + + let :default_params do + class_params.merge!(paramclass_defaults) + end + + context 'on Debian platforms' do + let :facts do + { + :osfamily => 'Debian', + :operatingsystem => 'Debian', + :lsbdistid => 'Debian' + } + end + + describe 'with default parameters' do + let :params do + {}.merge!(default_params) + end + + it { should contain_apt__source('debian_wheezy').with( + :location => 'http://archive.gplhost.com/debian', + :release => 'icehouse', + :repos => 'main', + :required_packages => 'gplhost-archive-keyring' + )} + + it { should contain_apt__source('debian_wheezy_backports').with( + :location => 'http://archive.gplhost.com/debian', + :release => 'icehouse-backports', + :repos => 'main' + )} + + end + + describe 'with overridden release' do + let :params do + default_params.merge!({ :release => 'juno' }) + end + + it { should contain_apt__source('debian_wheezy').with( + :location => 'http://archive.gplhost.com/debian', + :release => 'juno', + :repos => 'main', + :required_packages => 'gplhost-archive-keyring' + )} + + it { should contain_apt__source('debian_wheezy_backports').with( + :location => 'http://archive.gplhost.com/debian', + :release => 'juno-backports', + :repos => 'main' + )} + + end + + describe 'with overridden source hash' do + let :params do + default_params.merge!({ :source_hash => { + 'debian_unstable' => { + 'location' => 'http://mymirror/debian/', + 'repos' => 'main', + 'release' => 'unstable' + }, + 'puppetlabs' => { + 'location' => 'http://apt.puppetlabs.com', + 'repos' => 'main', + 'release' => 'wheezy', + 'key' => '4BD6EC30', + 'key_server' => 'pgp.mit.edu' + } + } + }) + end + + it { should contain_apt__source('debian_unstable').with( + :location => 'http://mymirror/debian/', + :release => 'unstable', + :repos => 'main' + )} + + it { should contain_apt__source('puppetlabs').with( + :location => 'http://apt.puppetlabs.com', + :repos => 'main', + :release => 'wheezy', + :key => '4BD6EC30', + :key_server => 'pgp.mit.edu' + )} + + end + + describe 'with overridden source default' do + let :params do + default_params.merge!({ :source_defaults => { + 'include_src' => 'true' + } + }) + end + + it { should contain_apt__source('debian_wheezy').with( + :location => 'http://archive.gplhost.com/debian', + :release => 'icehouse', + :repos => 'main', + :required_packages => 'gplhost-archive-keyring', + :include_src => 'true' + )} + + it { should contain_apt__source('debian_wheezy_backports').with( + :location => 'http://archive.gplhost.com/debian', + :release => 'icehouse-backports', + :repos => 'main', + :include_src => 'true' + )} + + end + end +end diff --git a/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb b/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb new file mode 100644 index 0000000..f62fa01 --- /dev/null +++ b/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb @@ -0,0 +1,114 @@ +require 'spec_helper' + +describe 'openstack_extras::repo::debian::ubuntu' do + let :class_params do + { + :manage_uca => true, + :source_hash => {}, + :source_defaults => {}, + :package_require => false + } + end + + let :paramclass_defaults do + { + :release => 'icehouse' + } + end + + let :default_params do + class_params.merge!(paramclass_defaults) + end + + context 'on Debian platforms' do + let :facts do + { + :osfamily => 'Debian', + :operatingsystem => 'Ubuntu', + :lsbdistid => 'Ubuntu', + :lsbdistcodename => 'trusty' + } + end + + describe 'with default parameters' do + let :params do + {}.merge!(default_params) + end + + it { should contain_apt__source('ubuntu-cloud-archive').with( + :location => 'http://ubuntu-cloud.archive.canonical.com/ubuntu', + :release => 'trusty-updates/icehouse', + :repos => 'main', + :required_packages => 'ubuntu-cloud-keyring' + )} + + end + + describe 'with overridden release' do + let :params do + default_params.merge!({ :release => 'juno' }) + end + + it { should contain_apt__source('ubuntu-cloud-archive').with( + :location => 'http://ubuntu-cloud.archive.canonical.com/ubuntu', + :release => 'trusty-updates/juno', + :repos => 'main', + :required_packages => 'ubuntu-cloud-keyring' + )} + + end + + describe 'with overridden source hash' do + let :params do + default_params.merge!({ :source_hash => { + 'local_mirror' => { + 'location' => 'http://mymirror/ubuntu/', + 'repos' => 'main', + 'release' => 'trusty' + }, + 'puppetlabs' => { + 'location' => 'http://apt.puppetlabs.com', + 'repos' => 'main', + 'release' => 'trusty', + 'key' => '4BD6EC30', + 'key_server' => 'pgp.mit.edu' + } + } + }) + end + + it { should contain_apt__source('local_mirror').with( + :location => 'http://mymirror/ubuntu/', + :release => 'trusty', + :repos => 'main' + )} + + it { should contain_apt__source('puppetlabs').with( + :location => 'http://apt.puppetlabs.com', + :release => 'trusty', + :repos => 'main', + :key => '4BD6EC30', + :key_server => 'pgp.mit.edu' + )} + + end + + describe 'with overridden source default' do + let :params do + default_params.merge!({ :source_defaults => { + 'include_src' => 'true' + } + }) + end + + it { should contain_apt__source('ubuntu-cloud-archive').with( + :include_src => 'true', + :location => 'http://ubuntu-cloud.archive.canonical.com/ubuntu', + :release => 'trusty-updates/icehouse', + :repos => 'main', + :required_packages => 'ubuntu-cloud-keyring' + )} + + end + end +end diff --git a/spec/classes/openstack_extras_repo_redhat_redhat_spec.rb b/spec/classes/openstack_extras_repo_redhat_redhat_spec.rb new file mode 100644 index 0000000..b4dd6a8 --- /dev/null +++ b/spec/classes/openstack_extras_repo_redhat_redhat_spec.rb @@ -0,0 +1,187 @@ +require 'spec_helper' + +describe 'openstack_extras::repo::redhat::redhat' do + let :class_params do + { + :manage_rdo => true, + :manage_epel => true, + :repo_hash => {}, + :gpgkey_hash => {}, + :purge_unmanaged => false, + :package_require => false + } + end + + let :paramclass_defaults do + { + :release => 'icehouse', + :repo_defaults => { 'enabled' => '1', + 'gpgcheck' => '1', + 'notify' => "Exec[yum_refresh]", + 'mirrorlist' => 'absent', + 'require' => "Anchor[openstack_extras_redhat]" + }, + :gpgkey_defaults => { 'owner' => 'root', + 'group' => 'root', + 'mode' => '0644', + 'before' => "Anchor[openstack_extras_redhat]" + } + } + end + + let :default_params do + class_params.merge!(paramclass_defaults) + end + + context 'on RedHat platforms' do + let :facts do + { + :osfamily => 'RedHat', + :operatingsystem => 'RedHat', + :operatingsystemrelease => '6.5', + :operatingsystemmajrelease => '6' + } + end + + describe 'with default parameters' do + let :params do + {}.merge!(default_params) + end + + it { should contain_yumrepo('rdo-release').with( + :baseurl => "http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/", + :descr => "OpenStack Icehouse Repository", + :priority => 98, + :gpgkey => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse", + :enabled => '1', + :gpgcheck => '1', + :mirrorlist => 'absent', + :require => "Anchor[openstack_extras_redhat]", + :notify => "Exec[yum_refresh]" + )} + + it { should contain_yumrepo('epel').with( + :baseurl => 'https://download.fedoraproject.org/pub/epel/6/$basearch', + :descr => 'Extra Packages for Enterprise Linux 6 - $basearch', + :gpgkey => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6", + :failovermethod => 'priority', + :enabled => '1', + :gpgcheck => '1', + :mirrorlist => 'absent', + :require => "Anchor[openstack_extras_redhat]", + :notify => "Exec[yum_refresh]" + )} + + it { should contain_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse').with( + :source => "puppet:///modules/openstack_extras/RPM-GPG-KEY-RDO-Icehouse", + :owner => 'root', + :group => 'root', + :mode => '0644', + :before => "Anchor[openstack_extras_redhat]" + )} + + end + + describe 'with overridden release' do + let :params do + default_params.merge!({ :release => 'juno' }) + end + + it { should contain_yumrepo('rdo-release').with( + :baseurl => "http://repos.fedorapeople.org/repos/openstack/openstack-juno/epel-6/", + :descr => "OpenStack Juno Repository", + :gpgkey => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Juno" + )} + + it { should contain_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Juno').with( + :source => "puppet:///modules/openstack_extras/RPM-GPG-KEY-RDO-Juno" + )} + end + + describe 'with overridden repo hash' do + let :params do + default_params.merge!({ :repo_hash => { + 'CentOS-Base' => { + 'baseurl' => 'http://mymirror/$releasever/os/$basearch/', + 'descr' => 'CentOS-$releasever - Base', + 'gpgkey' => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6' + }, + 'CentOS-Updates' => { + 'baseurl' => 'http://mymirror/$releasever/updates/$basearch/', + 'descr' => 'CentOS-$releasever - Updates', + 'gpgkey' => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6', + } + } + }) + end + + it { should contain_yumrepo('CentOS-Base').with( + :baseurl => "http://mymirror/$releasever/os/$basearch/", + :descr => "CentOS-$releasever - Base", + :enabled => '1', + :gpgcheck => '1', + :gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6', + :mirrorlist => 'absent', + :require => "Anchor[openstack_extras_redhat]", + :notify => "Exec[yum_refresh]" + )} + + it { should contain_yumrepo('CentOS-Updates').with( + :baseurl => "http://mymirror/$releasever/updates/$basearch/", + :descr => "CentOS-$releasever - Updates", + :enabled => '1', + :gpgcheck => '1', + :gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6', + :mirrorlist => 'absent', + :require => "Anchor[openstack_extras_redhat]", + :notify => "Exec[yum_refresh]" + )} + + end + + describe 'with overridden repo default' do + let :params do + default_params.merge!({ :repo_defaults => { + 'proxy' => 'http://my.proxy.com:8000' + } + }) + end + + it { should contain_yumrepo('rdo-release').with( + :baseurl => "http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/", + :descr => "OpenStack Icehouse Repository", + :gpgkey => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse", + :proxy => "http://my.proxy.com:8000" + )} + end + + describe 'with overridden gpgkey default' do + let :params do + default_params.merge!({ :gpgkey_defaults => { + 'owner' => 'steve' + } + }) + end + + it { should contain_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse').with( + :owner => "steve" + )} + end + + describe 'with epel management disabled' do + let :params do + default_params.merge!({ :manage_epel => false }) + end + + it { should_not contain_yumrepo('epel') } + end + + describe 'with rdo management disabled' do + let :params do + default_params.merge!({ :manage_rdo => false }) + end + + it { should_not contain_yumrepo('rdo-release') } + end + end +end