Назад | Перейти на главную страницу

Предоставление Oracle JDK в VirtualBox с помощью Puppet и Vagrant

я пытаюсь установить Oracle jdk с помощью Vagrant / Puppet.

Вот соответствующая часть моего Vagrant file:

  config.vm.provision :puppet, :module_path => "puppet/modules" do |puppet|
     puppet.options = "--verbose --debug"       
     puppet.manifests_path = "puppet/manifests"
     puppet.manifest_file  = "java.pp"
  end

и вот мой java.pp марионеточный файл:

class java {

  package { "python-software-properties":
    require => Exec['apt-update'],
    ensure => installed
  }

  exec { 'add-webupd8-key':
    command => 'sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886',
    path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ],
  }

  exec { 'apt-update':
    command => 'sudo apt-get update',
    path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ],
  }

  exec { "add-apt-repository-oracle":
    command => "sudo add-apt-repository -y ppa:webupd8team/java",
    path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ],
    require => [Exec["add-webupd8-key"],Package["python-software-properties"]],
#    notify => Exec["apt-update"]
  }

  exec {
    'set-licence-selected':
      command => '/bin/echo debconf shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections';

    'set-licence-seen':
      command => '/bin/echo debconf shared/accepted-oracle-license-v1-1 seen true | /usr/bin/debconf-set-selections';
  }

  package { 'oracle-java7-installer':
#    ensure => "7u40-0~webupd8~0",
    ensure => installed,
    require => [Exec['add-apt-repository-oracle'], Exec['apt-update'], Exec['set-licence-selected'], Exec['set-licence-seen']],
  }
}

include java

Когда я впервые бегу vagrant up, Я всегда получаю следующую ошибку:

debug: Puppet::Type::Package::ProviderApt: Executing '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install oracle-java7-installer'
err: /Stage[main]/Java/Package[oracle-java7-installer]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install oracle-java7-installer' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package oracle-java7-installer

когда я следующий запустить vagrant provision, то jdk устанавливается правильно.

Может ли кто-нибудь помочь мне понять, почему подготовка не работает гладко на этапе бродяжничества? Также как я могу упростить свой файл java.pp?

Вы закомментировали notify => Exec["apt-update"] для Exec["add-apt-repository-oracle"] важно.

Без него apt-get update свободно работать перед репозиторий фактически добавлен; Package['oracle-java7-installer'] проверяет наличие репо и запуск обновления, но ничто не гарантирует, что это произойдет в правильном порядке.

Могу я порекомендовать Кукольные лаборатории apt модуль, а кто позаботится об этом за вас?

apt::ppa { 'ppa:webupd8team/java': }

package { 'oracle-java7-installer':
  ensure   => installed,
  require  => Apt::Ppa['ppa:webupd8team/java'],
}