环境:
在虚拟机中运行 CentOs 7.2 服务器,该虚拟机具有使用 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
我的 puppet list 的片段:
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 (你需要确保它已安装)和以下 puppet 文件
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所有安装过程
关于linux - 由于验证,Puppet-Apt 安装包失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37214078/