class Pero::Puppet::Redhat

Public Class Methods

show_versions() click to toggle source
# File lib/pero/puppet/redhat.rb, line 20
def self.show_versions
  image = ::Docker::Image.create('fromImage' => 'centos:7')
  init = image.run("/sbin/init")
  ret = []
  show_versions_commands.each do |c|
    init.exec(c, stdout:false, stderr: false) do |stream, chunk|
      chunk.split(/\n/).each do |r|
        ret << r.gsub(/\.el.*/, '')  if r =~ /(^puppet-3|^puppet-agent|^puppet-server|^puppetserver)/
      end
    end
  end
  puts ret.sort.join("\n")
  init.delete(:force => true)
end
show_versions_commands() click to toggle source
# File lib/pero/puppet/redhat.rb, line 4
def self.show_versions_commands
  [
    %w(rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm),
    %w(yum --showduplicates search puppet),
    %w(yum remove -y puppetlabs-release),
    %w(rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm),
    %w(yum --showduplicates search puppet),
    %w(yum remove -y puppetlabs-release),
    %w(rpm -ivh https://yum.puppetlabs.com/puppet5-release-el-7.noarch.rpm),
    %w(yum --showduplicates search puppet),
    %w(yum remove -y puppet5-release),
    %w(rpm -ivh https://yum.puppetlabs.com/puppet6-release-el-7.noarch.rpm),
    %w(yum --showduplicates search puppet),
  ]
end

Public Instance Methods

install(version) click to toggle source
# File lib/pero/puppet/redhat.rb, line 40
def install(version)
  release_package, package_name = if Gem::Version.new("4.0.0") > Gem::Version.new(version)
    ["puppetlabs-release-el-#{main_release}.noarch.rpm", "puppet"]
  elsif Gem::Version.new("5.0.0") > Gem::Version.new(version) && Gem::Version.new("4.0.0") <= Gem::Version.new(version)
    ["puppetlabs-release-pc1-el-#{main_release}.noarch.rpm", "puppet"]
  elsif Gem::Version.new("6.0.0") > Gem::Version.new(version) && Gem::Version.new("5.0.0") <= Gem::Version.new(version)
    ["puppet5-release-el-#{main_release}.noarch.rpm", "puppet-agent"]
  else
    ["puppet6-release-el-#{main_release}.noarch.rpm", "puppet-agent"]
  end

  unless run_specinfra(:check_package_is_installed, package_name, version)
    unless run_specinfra(:check_package_is_installed, release_package.gsub(/-el.*/, ''))
      Pero.log.info "install package #{release_package}"
      run_specinfra(:remove_package, "puppetlabs-release")
      run_specinfra(:remove_package, "puppet5-release")
      run_specinfra(:remove_package, "puppet6-release")
      raise "failed package install:#{release_package}" if specinfra.run_command("rpm -ivh https://yum.puppetlabs.com/#{release_package}").exit_status != 0
    end

    Pero.log.info "install package #{package_name}-#{version}"
    raise "failed package uninstall:#{package_name}" if run_specinfra(:remove_package, package_name).exit_status != 0
    raise "failed package install:#{package_name} version #{version}" if run_specinfra(:install_package, package_name, version).exit_status != 0
  else
    Pero.log.info "puppet-#{version} installed"
  end
end
main_release() click to toggle source
# File lib/pero/puppet/redhat.rb, line 36
def main_release
  os_info[:release].split(/\./)[0]
end