2015-11-11 2 views
0

Я сейчас перехожу на Puppet 4.x. Я запускаю Ubuntu Server 14.04 с Puppet 4.2.3 и Puppetserver 2.1.2. Я должен добавить некоторые дополнительные камни на сервер и некоторые агенты. Обе команды зависают бесконечно.puppetserver gem install не уважает http proxy

/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 

Я получаю такое же поведение, когда опускаю настройки прокси.

Когда я запускаю команду gem install на том же компьютере из установленной среды Ruby 1.9.3. Все работает отлично, поэтому прокси работает нормально:

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 
... 

Есть ли у кого-нибудь идеи, как решить проблему. Сейчас это становится жестким блокиратором.

+0

Вы пробовали смотреть процесс 'gem' с помощью' strace', чтобы увидеть, где он застревает и что он пытается сделать? –

+0

Посмотрите на мой ответ, опубликованный впоследствии. У вас есть представление о том, как решить проблему без этого хакера? –

+0

o_O Оказывает ли ваша машина отсутствие энтропии? Вы можете попробовать установить «убранный» или похожий инструмент. –

ответ

0

Я нашел этот вопрос ... 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.

Update

Гораздо лучшим решением является установка другого инструмента, как havaged что средства правовой защиты низкоэнтропийного условий. A Puppet module можно найти здесь: https://forge.puppetlabs.com/stm/haveged