Class: Pero::Puppet::Ubuntu

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

Instance Attribute Summary

Attributes inherited from Base

#os_info, #specinfra

Instance Method Summary collapse

Methods inherited from Base

#check_command, #initialize, #run_specinfra

Constructor Details

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

Instance Method Details

#code_nameObject



4
5
6
7
8
9
10
# File 'lib/pero/puppet/ubuntu.rb', line 4

def code_name
  case os_info[:release]
  when '20.04' then 'focal'
  when '22.04' then 'jammy'
  else raise "unsupported OS release: #{os_info[:release]}"
  end
end

#install(version) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pero/puppet/ubuntu.rb', line 12

def install(version)
  major_version = version.split('.')[0]
  release_package = "puppet#{major_version}-release"
  release_package_name = "#{release_package}-#{code_name}.deb"
  package_name = 'puppet-agent'
  package_version = "#{version}-1#{code_name}"

  unless run_specinfra(:check_package_is_installed, package_name, package_version)
    unless run_specinfra(:check_package_is_installed, release_package, '')
      Pero.log.info "install package #{release_package}"
      cmd = specinfra.run_command("        wget -O /tmp/\#{release_package_name} https://apt.puppetlabs.com/\#{release_package_name} &&\n        dpkg -i /tmp/\#{release_package_name} &&\n        rm -f /tmp/\#{release_package_name}\n      COMMAND\n      raise \"failed package install:\#{release_package} stdout:\#{cmd.stdout}\" if cmd.exit_status != 0\n      specinfra.run_command('apt-get update -qqy')\n    end\n\n    Pero.log.info \"install package \#{package_name}-\#{package_version}\"\n    raise \"failed package install:\#{package_name} version \#{package_version}\" if run_specinfra(:install_package, package_name, package_version).exit_status != 0\n  else\n    Pero.log.info \"\#{package_name}-\#{package_version} installed\"\n  end\nend\n")