环境:
在虚拟机中运行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
的以下错误:
可以成功安装所有其他软件包。
失败后,我用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
时,我得到以下输出:
答案 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的所有内容都正常时,这可以解决您的问题。