class VagrantVbguest::Installers::CentOS

Public Class Methods

match?(vm) click to toggle source
Calls superclass method
# File lib/vagrant-vbguest/installers/centos.rb, line 5
def self.match?(vm)
  super && communicate_to(vm).test('test -f /etc/centos-release')
end

Public Instance Methods

install(opts=nil, &block) click to toggle source

Install missing deps and yield up to regular linux installation

Calls superclass method
# File lib/vagrant-vbguest/installers/centos.rb, line 10
def install(opts=nil, &block)
  if upgrade_kernel?
    upgrade_kernel(opts, &block)
  else
    install_kernel_deps(opts, &block)
  end
  super
end
installer_options() click to toggle source
Calls superclass method
# File lib/vagrant-vbguest/installers/centos.rb, line 19
def installer_options
  @installer_options ||= {
    allow_kernel_upgrade: false,
    reboot_timeout: 300
  }.merge!(super)
end

Protected Instance Methods

dependencies() click to toggle source
Calls superclass method
# File lib/vagrant-vbguest/installers/centos.rb, line 109
def dependencies
  if !upgrade_kernel? && has_kernel_devel_info?
    # keep the original redhat dependencies
    super
  else
    # we should have installed kernel-devel(-`uname -r`) via install_kernel_devel or upgrade_kernel
    ['gcc', 'binutils', 'make', 'perl', 'bzip2', 'elfutils-libelf-devel'].join(' ')
  end
end
enablerepo() click to toggle source

parse the installer_option :enablerepo

# File lib/vagrant-vbguest/installers/centos.rb, line 33
def enablerepo
  unless instance_variable_defined?(:@enablerepo)
    enablerepo = installer_options.fetch(:enablerepo, false)
    @enablerepo =
      case enablerepo
      when String
        "--enablerepo=#{enablerepo}"
      when Array
        enablerepo.map { |e| "--enablerepo=#{e}" }.join(" ")
      when true
        rel = has_rel_repo? ? release_version : '*'
        "--enablerepo=C#{rel}-base --enablerepo=C#{rel}-updates"
      else
        nil
      end
  end
  @enablerepo
end
has_kernel_devel_info?() click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 59
def has_kernel_devel_info?
  unless instance_variable_defined?(:@has_kernel_devel_info)
    @has_kernel_devel_info = communicate.test('yum info kernel-devel-`uname -r`', sudo: true)
  end
  @has_kernel_devel_info
end
has_rel_repo?() click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 66
def has_rel_repo?
  unless instance_variable_defined?(:@has_rel_repo)
    rel = release_version
    @has_rel_repo = communicate.test("yum repolist --enablerepo=C#{rel}-base --enablerepo=C#{rel}-updates")
  end
  @has_rel_repo
end
install_kernel_deps(opts=nil, &block) click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 52
def install_kernel_deps(opts=nil, &block)
  unless has_kernel_devel_info?
    update_release_repos(opts, &block)
    install_kernel_devel(opts, &block)
  end
end
install_kernel_devel(opts=nil, &block) click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 90
def install_kernel_devel(opts=nil, &block)
  cmd = "yum install -y kernel-devel-`uname -r` #{enablerepo}"
  communicate.sudo(cmd, opts, &block)
end
release_version() click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 74
def release_version
  unless instance_variable_defined?(:@release_version)
    @release_version = nil
    version_pattern = /(\d+\.\d+(\.\d+)?)/
    communicate.sudo('cat /etc/centos-release') do |type, data|
      v = VagrantVbguest::Version(data, version_pattern)
      @release_version = v if v
    end
  end
  @release_version
end
update_release_repos(opts=nil, &block) click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 86
def update_release_repos(opts=nil, &block)
  communicate.sudo('yum install -y centos-release', opts, &block)
end
upgrade_kernel(opts=nil, &block) click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 95
def upgrade_kernel(opts=nil, &block)
  communicate.sudo('yum update -y kernel', opts, &block)
  communicate.sudo('yum install -y kernel-devel', opts, &block)

  env.ui.info(I18n.t("vagrant_vbguest.centos.rebooting", vm_name: vm.name))
  communicate.sudo('shutdown -r now', opts, &block)

  sleep_guard = installer_options[:reboot_timeout]
  begin
    sleep 10
    sleep_guard -= 10
  end while sleep_guard >= 0 && !@vm.communicate.ready?
end
upgrade_kernel?() click to toggle source
# File lib/vagrant-vbguest/installers/centos.rb, line 28
def upgrade_kernel?
  installer_options[:allow_kernel_upgrade]
end