diff -r f239c8c5bb94 -r cf0f23803a53 dev/provisioning/modules/elasticsearch/manifests/repo.pp --- a/dev/provisioning/modules/elasticsearch/manifests/repo.pp Tue Nov 08 18:23:01 2016 +0100 +++ b/dev/provisioning/modules/elasticsearch/manifests/repo.pp Wed Nov 09 15:05:41 2016 +0100 @@ -26,8 +26,43 @@ class elasticsearch::repo { Exec { - path => [ '/bin', '/usr/bin', '/usr/local/bin' ], - cwd => '/', + path => [ '/bin', '/usr/bin', '/usr/local/bin' ], + cwd => '/', + } + + if $elasticsearch::ensure == 'present' { + if versioncmp($elasticsearch::repo_version, '5.0') >= 0 { + $_repo_url = 'https://artifacts.elastic.co/packages' + case $::osfamily { + 'Debian': { + $_repo_path = 'apt' + } + default: { + $_repo_path = 'yum' + } + } + } else { + $_repo_url = 'http://packages.elastic.co/elasticsearch' + case $::osfamily { + 'Debian': { + $_repo_path = 'debian' + } + default: { + $_repo_path = 'centos' + } + } + } + + $_baseurl = "${_repo_url}/${elasticsearch::repo_version}/${_repo_path}" + } else { + case $::osfamily { + 'Debian': { + $_baseurl = undef + } + default: { + $_baseurl = 'absent' + } + } } case $::osfamily { @@ -36,38 +71,71 @@ Class['apt::update'] -> Package[$elasticsearch::package_name] apt::source { 'elasticsearch': - location => "http://packages.elastic.co/elasticsearch/${elasticsearch::repo_version}/debian", - release => 'stable', - repos => 'main', - key => $::elasticsearch::repo_key_id, - key_source => $::elasticsearch::repo_key_source, - include_src => false, + ensure => $elasticsearch::ensure, + location => $_baseurl, + release => 'stable', + repos => 'main', + key => { + 'id' => $::elasticsearch::repo_key_id, + 'source' => $::elasticsearch::repo_key_source, + }, + include => { + 'src' => false, + 'deb' => true, + }, + pin => $elasticsearch::repo_priority, } } 'RedHat', 'Linux': { + # Versions prior to 3.5.1 have issues with this param + # See: https://tickets.puppetlabs.com/browse/PUP-2163 + if versioncmp($::puppetversion, '3.5.1') >= 0 { + Yumrepo['elasticsearch'] { + ensure => $elasticsearch::ensure, + } + } yumrepo { 'elasticsearch': descr => 'elasticsearch repo', - baseurl => "http://packages.elastic.co/elasticsearch/${elasticsearch::repo_version}/centos", + baseurl => $_baseurl, gpgcheck => 1, gpgkey => $::elasticsearch::repo_key_source, enabled => 1, + proxy => $::elasticsearch::repo_proxy, + priority => $elasticsearch::repo_priority, + } ~> + exec { 'elasticsearch_yumrepo_yum_clean': + command => 'yum clean metadata expire-cache --disablerepo="*" --enablerepo="elasticsearch"', + refreshonly => true, + returns => [0, 1], } } 'Suse': { + if $::operatingsystem == 'SLES' and versioncmp($::operatingsystemmajrelease, '11') <= 0 { + # Older versions of SLES do not ship with rpmkeys + $_import_cmd = "rpm --import ${::elasticsearch::repo_key_source}" + } else { + $_import_cmd = "rpmkeys --import ${::elasticsearch::repo_key_source}" + } + exec { 'elasticsearch_suse_import_gpg': - command => "rpmkeys --import ${::elasticsearch::repo_key_source}", - unless => "test $(rpm -qa gpg-pubkey | grep -i '${::elasticsearch::repo_key_id}' | wc -l) -eq 1 ", - notify => [ Zypprepo['elasticsearch'] ], + command => $_import_cmd, + unless => + "test $(rpm -qa gpg-pubkey | grep -i 'D88E42B4' | wc -l) -eq 1", + notify => Zypprepo['elasticsearch'], } zypprepo { 'elasticsearch': - baseurl => "http://packages.elastic.co/elasticsearch/${elasticsearch::repo_version}/centos", + baseurl => $_baseurl, enabled => 1, autorefresh => 1, name => 'elasticsearch', gpgcheck => 1, gpgkey => $::elasticsearch::repo_key_source, type => 'yum', + } ~> + exec { 'elasticsearch_zypper_refresh_elasticsearch': + command => 'zypper refresh elasticsearch', + refreshonly => true, } } default: { @@ -75,32 +143,4 @@ } } - # Package pinning - - case $::osfamily { - 'Debian': { - include ::apt - - if ($elasticsearch::package_pin == true and $elasticsearch::version != false) { - apt::pin { $elasticsearch::package_name: - ensure => 'present', - packages => $elasticsearch::package_name, - version => $elasticsearch::version, - priority => 1000, - } - } - - } - 'RedHat', 'Linux': { - - if ($elasticsearch::package_pin == true and $elasticsearch::version != false) { - yum::versionlock { "0:elasticsearch-${elasticsearch::pkg_version}.noarch": - ensure => 'present', - } - } - } - default: { - warning("Unable to pin package for OSfamily \"${::osfamily}\".") - } - } }