class DanarchyDeploy::Installer
Public Class Methods
new(deployment, options)
click to toggle source
# File lib/danarchy_deploy/installer.rb, line 4 def self.new(deployment, options) # available opts: { pretend: true|false } abort('Operating System not defined! Exiting!') if !deployment[:os] puts "\n" + self.name installer, updater, cleaner = prep_operating_system(deployment, options) install_result = nil if deployment[:packages] packages = deployment[:packages].join(' ') install_result = DanarchyDeploy::Helpers.run_command("#{installer} #{packages}", options) else puts 'No packages to install.' end if !options[:pretend] puts "\nRunning system updates..." updater_result = DanarchyDeploy::Helpers.run_command(updater, options) puts updater_result[:stdout] if updater_result[:stdout] puts "\nCleaning up unused packages..." cleanup_result = DanarchyDeploy::Helpers.run_command(cleaner, options) puts cleanup_result[:stdout] if cleanup_result[:stdout] end # [install_result, cleanup_result, updater_result] deployment end
Private Class Methods
prep_operating_system(deployment, options)
click to toggle source
# File lib/danarchy_deploy/installer.rb, line 32 def self.prep_operating_system(deployment, options) (installer, updater, cleaner) = nil os = deployment[:os] if os.downcase == 'gentoo' puts "#{os.capitalize} detected! Using emerge." installer = 'emerge --usepkg --quiet --noreplace ' installer += '--pretend ' if options[:pretend] # Build packages if template instance installer.gsub('usepkg', 'buildpkg') if deployment[:hostname] =~ /^(image|template)/ cleaner = 'emerge --depclean --quiet ' cleaner += '--pretend ' if options[:pretend] updater = 'emerge --update --deep --newuse --quiet --with-bdeps=y @world' updater += ' --pretend' if options[:pretend] elsif %w[debian ubuntu].include?(os.downcase) puts "#{os.capitalize} detected! Using apt." installer = 'export DEBIAN_FRONTEND=noninteractive ; apt install -y -qq ' installer += '--dry-run ' if options[:pretend] updater = 'apt-get upgrade -y -qq' cleaner = 'apt-get autoclean -y -qq' elsif os.downcase == 'opensuse' puts "#{os.capitalize} detected! Using zypper." installer = 'zypper install ' updater = nil cleaner = nil # Needs package checking & testing elsif %w[centos redhat].include?(os.downcase) # needs more testing puts "#{os.capitalize} detected! Using yum." installer = 'yum install -y ' # packages.each do |pkg| # IO.popen("rpm -q #{pkg}") do |o| # packages.delete(pkg) if !o.read.include?('not installed') # end # end updater = nil cleaner = nil end [installer, updater, cleaner] end