【问题标题】:puppetserver gem install does not respect http proxypuppetserver gem install 不尊重 http 代理
【发布时间】:2015-11-11 23:46:39
【问题描述】:

我目前正在迁移到 Puppet 4.x。我正在运行带有 Puppet 4.2.3 和 Puppetserver 2.1.2 的 Ubuntu Server 14.04。我必须向服务器和一些代理添加一些额外的宝石。这两个命令都无限期挂起。

/opt/puppetlabs/bin/puppetserver gem install -V --no-rdoc --no-ri -p http://myproxy.com:8080 rest-client
/opt/puppetlabs/puppet/bin/gem install -V --no-rdoc --no-ri -p http://myproxy.com:8080 rest-client

当我省略代理设置时,我会得到相同的行为。

当我从已安装的 Ruby 1.9.3 环境在同一台机器上运行 gem installcommand 时。一切正常,所以代理工作正常:

gem install -V --no-rdoc --no-ri rest-client -p http://myproxy.com:8080
GET http://rubygems.org/latest_specs.4.8.gz
302 Found
GET http://rubygems.global.ssl.fastly.net/latest_specs.4.8.gz
200 OK
GET http://rubygems.org/quick/Marshal.4.8/rest-client-1.8.0.gemspec.rz
302 Found
GET http://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/rest-client-1.8.0.gemspec.rz
200 OK
...

有没有人知道如何解决这个问题。它现在对我来说是一个硬块。

【问题讨论】:

  • 您是否尝试过使用strace 观察gem 进程,看看它卡在哪里以及它试图做什么?
  • 看看我随后发布的答案。您是否知道如何在没有这种黑客解决方法的情况下解决问题?
  • o_O 您的机器是否存在熵不足的问题?您可以尝试安装havaged 或类似工具。
  • 你的解决方案听起来好多了...我会试一试的。
  • havaged效果很好,可以通过Puppet管理...非常感谢!

标签: puppet


【解决方案1】:

我找到了问题...jstack 给了我以下跟踪:

"main" prio=10 tid=0x00007fce4400a000 nid=0x2f89 runnable [0x00007fce4d709000]
   java.lang.Thread.State: RUNNABLE
    at java.io.FileInputStream.readBytes(Native Method)
    at java.io.FileInputStream.read(FileInputStream.java:272)
    at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:551)
    at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:139)
    at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:197)
    at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:214)
    - locked <0x00000000c34ba1e8> (a sun.security.provider.SecureRandom)
    at java.security.SecureRandom.nextBytes(SecureRandom.java:466)
    - locked <0x00000000c34ba190> (a java.security.SecureRandom)
    at org.jruby.ext.securerandom.SecureRandomLibrary.nextBytes(SecureRandomLibrary.java:49)
    at org.jruby.ext.securerandom.SecureRandomLibrary.nextBytes(SecureRandomLibrary.java:42)
    at org.jruby.ext.securerandom.SecureRandomLibrary.random_bytes(SecureRandomLibrary.java:21)
    at org.jruby.ext.securerandom.SecureRandomLibrary$INVOKER$s$random_bytes.call(SecureRandomLibrary$INVOKER$s$random_bytes.gen)

可以通过将-Djava.security.egd=file:/dev/./urandom 添加到/opt/puppetlabs/server/apps/puppetserver/cli/apps/gem 来解决此问题。

更新

一个更好的解决方案是安装另一个工具,如 havaged 来解决低熵条件。可以在此处找到 Puppet 模块:https://forge.puppetlabs.com/stm/haveged

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2020-08-08
    • 2011-01-08
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多