由于验证问题,Puppet-Apt无法安装软件包

时间:2016-05-13 15:36:48

标签: linux vagrant virtual-machine puppet apt

环境:

在虚拟机中运行CentOs 7.2 Server,该虚拟机具有使用CNTLM设置的本地代理。我安装了vagrant版本1.8.1。另外我安装了vagrant-proxyconf插件。

目标:

使用vagrant在CentOs 7.2服务器上设置虚拟机。

是:虚拟机中的虚拟机。

现状:

Vagrantfile的片段:

...
config.proxy.http = http://10.0.2.2:3128
config.proxy.https = http://10.0.2.2:3128
config.proxy.no_proxy = localhost, 127.0.0.*, 10.0.2.*
...

# puppet config
config.vm.provision :puppet, :module_path => "../puppet/modules" do |puppet|
  puppet.manifests_path = "../puppet/manifests"
  puppet.manifest_file  = "base.pp"
  # In facts are the proxy settings with host and port. 
  puppet.facter = facts
end

我的木偶清单的片段:

class box-configuration {
  ...
  class { 'apt':
   always_apt_update => true;
  } 

  # Always a apt-key update before installing packages 
  exec { 'apt-key_update':
   command => "/usr/bin/apt-key update && /usr/bin/apt-get update",
   require => Class['apt'],
  }
  apt::ppa { 'ppa:openjdk-r/ppa': }

  package { ["unzip", "curl", "openjdk-8-jdk"]:
    ensure => present,
    require => [Class['apt'], Exec['apt-key_update']],
  }
...
}

问题:

当我在终端中运行vagrant up时,我收到包openjdk-8-jdk的以下错误: enter image description here

可以成功安装所有其他软件包。

失败后,我用vagrant ssh连接到虚拟机,用sudo apt-get install openjdk-8-jdk手动安装此软件包,然后我收到以下提示:

 Install these packages without verification [y/N]? 

apt-get install openjdk-8-jdk想要验证从base.pp中最近添加的存储库下载软件包。

我该怎么做?我已经添加了Exec['apt-key_update']要求......

修改 当我使用vagrant ssh连接到虚拟机以手动进行更新apt-key update && apt-get update时,我得到以下输出:

apt-key update apt-get update

2 个答案:

答案 0 :(得分:3)

安装java包时,你没有apt::ppa { 'ppa:openjdk-r/ppa': }的依赖关系,所以你可以创建一个dep

apt::ppa { 'ppa:openjdk-r/ppa': }
exec { 'apt-key_update':
  command => "/usr/bin/apt-key update && /usr/bin/apt-get update",
  require => [Class['apt'], Apt::ppa['ppa:openjdk-r/ppa']],
}
package { ["unzip", "curl", "openjdk-8-jdk"]:
  ensure => present,
  require => [Class['apt'], Exec['apt-key_update']],
}
编辑:我在ubuntu / trusty64框上测试过,我使用apt module(你需要确保安装它)和以下木偶文件

class box-configuration {

  class { 'apt':
    update => {
      frequency => 'always',
    },
  } 

  # Always a apt-key update before installing packages 
  exec { 'apt-key_update':
   command => "/usr/bin/apt-key update && /usr/bin/apt-get update",
   require => [Class['apt'], Apt::Ppa['ppa:openjdk-r/ppa']]
  }
  apt::ppa { 'ppa:openjdk-r/ppa': }

  package { ["unzip", "curl", "openjdk-8-jdk"]:
    ensure => present,
    require => [Class['apt'], Exec['apt-key_update']],
  }
}

include box-configuration

一切正常并安装了java8 - 您可以看到所有安装过程的gist

答案 1 :(得分:1)

这里的问题是版本为0.92.3的CNTLM 。他们在这个版本中使用代理隧道存在一些问题。他们建议安装0.93beta5版本,这解决了我的问题......但你无法从SourceForge获得测试版。我从这个repository下载测试版。

否则请查看@FrédéricHenri的答案,当CNTLM的所有内容都正常时,这可以解决您的问题。