Class: Pero::Puppet::Redhat

Inherits:
Base
  • Object
show all
Defined in:
lib/pero/puppet/redhat.rb

Instance Attribute Summary

Attributes inherited from Base

#os_info, #specinfra

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#check_command, #initialize, #run_specinfra

Constructor Details

This class inherits a constructor from Pero::Puppet::Base

Class Method Details

.show_versionsObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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_commandsObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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

Instance Method Details

#install(version) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 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"]
  elsif Gem::Version.new("7.0.0") > Gem::Version.new(version) && Gem::Version.new("6.0.0") <= Gem::Version.new(version)
    ["puppet6-release-el-#{main_release}.noarch.rpm", "puppet-agent"]
  else
    ["puppet7-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_releaseObject



36
37
38
# File 'lib/pero/puppet/redhat.rb', line 36

def main_release
  os_info[:release].split(/\./)[0]
end