Puppet-Apt 由于验证无法安装包

Puppet-Apt fails to install package because of verification

环境:

运行虚拟机中的CentOs 7.2 Server,它有一个用CNTLM设置的本地代理。我已经安装了 vagrant 版本 1.8.1。另外我安装了 vagrant-proxyconf 插件。

目标:

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

是:虚拟机中的虚拟机。

现状:

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 的以下错误:

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

失败后,我用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 我得到以下输出:

当你安装 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 所有安装过程

这里的问题是 CNTLM with the version 0.92.3.. They have some problems in this version with the proxy tunneling. They recommend to install the 0.93beta5 version, and this solved my problem... But you can't get the beta version from SourceForge.. I download the beta version from this repository

否则请查看@Frédéric Henri 的回答,这可以解决您的问题,前提是 CNTLM 一切正常。