linux - 由于验证,Puppet-Apt 安装包失败

标签 linux vagrant virtual-machine puppet apt

环境:

在虚拟机中运行 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 的以下错误: 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

最佳答案

当你安装 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/

相关文章:

ruby - 安装 Vagrant 的开发版本,但 bundler 似乎没有从源代码安装 vagrant gem

ubuntu - 我可以在 Ubuntu 虚拟机上安装应用程序吗?

java - linux bash中java程序超时

vagrant - 设置Vagrant的问题

amazon-ec2 - 删除包 ansible 剧本

c++ - 从 vmware 识别主机

docker - 在 GitLab CI 中使用 QEMU 而不是 Docker 镜像

c++ - 链接失败,怎么回事?

ruby - 为 VIM 安装 RSense

linux - process_usershare_file : stat of failed. Samba 权限被拒绝