kindredgroup / puppet-forge-server

Private Puppet forge server supports local files and both v1 and v3 API proxies
69 stars 44 forks source link

"400 Bad Rquest" or "503 Service Unavailable" in vagrant box #57

Open rndmh3ro opened 7 years ago

rndmh3ro commented 7 years ago

I'm trying to use the forge server in vagrant, with CentOS Linux release 7.2.1511 (Core), the following way:

bin/puppet-forge-server --debug -x https://forge.puppet.com -p 8081
[2016-12-19 09:20:11] INFO  Using RAM memory LRUCache with time to live of 1800sec and max size of 250 elements
[2016-12-19 09:20:11] INFO  Detecting API version for https://forge.puppet.com...
[2016-12-19 09:20:11] INFO  Cache in RAM memory size: 0, MISS for url: https://forge.puppet.com/v3/modules/puppetlabs-stdlib
[2016-12-19 09:20:11] DEBUG  Fetching data for url: https://forge.puppet.com/v3/modules/puppetlabs-stdlib from remote server
[2016-12-19 09:20:12] DEBUG  Data for url: https://forge.puppet.com/v3/modules/puppetlabs-stdlib fetched, 125935 bytes
[2016-12-19 09:20:12] INFO   +- Daemonizing: false
[2016-12-19 09:20:12] INFO   |- Port: 8081
[2016-12-19 09:20:12] INFO   |- Host: default
[2016-12-19 09:20:12] INFO   |- Pidfile: default
[2016-12-19 09:20:12] INFO   |- Server: default
[2016-12-19 09:20:12] INFO   `- Backends:
[2016-12-19 09:20:12] INFO      - #<PuppetForgeServer::Backends::Directory:0x000000025a8640 @module_dir="/tmp/puppet-forge-server/cache", @log=#<PuppetForgeServer::Logger:0x000000025f10e8 @loggers=[#<Logger:0x000000025f0f80 @progname=nil, @level=0, @default_formatter=#<Logger::Formatter:0x000000025f0f58 @datetime_format=nil>, @formatter=#<Proc:0x000000025f0cb0@/root/puppet-forge-server/lib/puppet_forge_server/logger.rb:31>, @logdev=#<Logger::LogDevice:0x000000025f0e68 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x000000025f0e40 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x000000025f0df0>>>>]>, @readonly=true>
[2016-12-19 09:20:12] INFO      - #<PuppetForgeServer::Backends::ProxyV3:0x0000000259f7e8 @url="https://forge.puppet.com", @cache_dir="/tmp/puppet-forge-server/cache/a3c5ffb74360ad0af0567024ebc24a03ed3a74c6", @http_client=#<PuppetForgeServer::Http::HttpClient:0x259f7c0 @log=#<PuppetForgeServer::Logger:0x000000025f10e8 @loggers=[#<Logger:0x000000025f0f80 @progname=nil, @level=0, @default_formatter=#<Logger::Formatter:0x000000025f0f58 @datetime_format=nil>, @formatter=#<Proc:0x000000025f0cb0@/root/puppet-forge-server/lib/puppet_forge_server/logger.rb:31>, @logdev=#<Logger::LogDevice:0x000000025f0e68 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x000000025f0e40 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x000000025f0df0>>>>]>, @uri_options={"User-Agent"=>"Puppet-Forge-Server/1.9.0", :allow_redirections=>:safe}, @cache=#<LRUCache:0x25dc490 @max_size=250, @default=nil, @eviction_handler=nil, @ttl=1800.0, @soft_ttl=0.0, @retry_delay=0.0, @pqueue=<PriorityQueue: [["https://forge.puppet.com/v3/modules/puppetlabs-stdlib", 1]]>, @counter=1, @size=1>>, @log=#<PuppetForgeServer::Logger:0x000000025f10e8 @loggers=[#<Logger:0x000000025f0f80 @progname=nil, @level=0, @default_formatter=#<Logger::Formatter:0x000000025f0f58 @datetime_format=nil>, @formatter=#<Proc:0x000000025f0cb0@/root/puppet-forge-server/lib/puppet_forge_server/logger.rb:31>, @logdev=#<Logger::LogDevice:0x000000025f0e68 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x000000025f0e40 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x000000025f0df0>>>>]>, @file_path="/v3/files">
[2016-12-19 09:20:12] INFO  WEBrick 1.3.1
[2016-12-19 09:20:12] INFO  ruby 2.0.0 (2014-11-13) [x86_64-linux]
[2016-12-19 09:20:12] WARN  TCPServer Error: Address already in use - bind(2)
[2016-12-19 09:20:12] INFO  WEBrick::HTTPServer#start: pid=4254 port=8081

When trying to install a module I get the following error:

[root@library-centos7 ~]# puppet module install --module_repository=http://127.0.0.1:8081 puppetlabs-stdlib
Notice: Preparing to install into /etc/puppet/modules ...
Notice: Downloading from http://127.0.0.1:8081 ...
Error: Request to Puppet Forge failed.
  The server being queried was http://127.0.0.1:8081/v3/releases?module=puppetlabs-stdlib
  The HTTP response we received was '400 Bad Request'

When running with -b 127.0.0.1 and -p 8181 I get a different error:

[root@library-centos7 puppet-forge-server]# bin/puppet-forge-server -b 127.0.0.1 --debug -x https://forge.puppet.com -p 8181
[2016-12-19 09:25:11] INFO  Using RAM memory LRUCache with time to live of 1800sec and max size of 250 elements
[2016-12-19 09:25:11] INFO  Detecting API version for https://forge.puppet.com...
[2016-12-19 09:25:11] INFO  Cache in RAM memory size: 0, MISS for url: https://forge.puppet.com/v3/modules/puppetlabs-stdlib
[2016-12-19 09:25:11] DEBUG  Fetching data for url: https://forge.puppet.com/v3/modules/puppetlabs-stdlib from remote server
[2016-12-19 09:25:12] DEBUG  Data for url: https://forge.puppet.com/v3/modules/puppetlabs-stdlib fetched, 125935 bytes
[2016-12-19 09:25:12] INFO   +- Daemonizing: false
[2016-12-19 09:25:12] INFO   |- Port: 8181
[2016-12-19 09:25:12] INFO   |- Host: default
[2016-12-19 09:25:12] INFO   |- Pidfile: default
[2016-12-19 09:25:12] INFO   |- Server: default
[2016-12-19 09:25:12] INFO   `- Backends:
[2016-12-19 09:25:12] INFO      - #<PuppetForgeServer::Backends::Directory:0x00000000e3c718 @module_dir="/tmp/puppet-forge-server/cache", @log=#<PuppetForgeServer::Logger:0x00000000e85080 @loggers=[#<Logger:0x00000000e84f40 @progname=nil, @level=0, @default_formatter=#<Logger::Formatter:0x00000000e84ef0 @datetime_format=nil>, @formatter=#<Proc:0x00000000e84c48@/root/puppet-forge-server/lib/puppet_forge_server/logger.rb:31>, @logdev=#<Logger::LogDevice:0x00000000e84e00 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x00000000e84dd8 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x00000000e84d88>>>>]>, @readonly=true>
[2016-12-19 09:25:12] INFO      - #<PuppetForgeServer::Backends::ProxyV3:0x00000000e32bf0 @url="https://forge.puppet.com", @cache_dir="/tmp/puppet-forge-server/cache/a3c5ffb74360ad0af0567024ebc24a03ed3a74c6", @http_client=#<PuppetForgeServer::Http::HttpClient:0xe32bc8 @log=#<PuppetForgeServer::Logger:0x00000000e85080 @loggers=[#<Logger:0x00000000e84f40 @progname=nil, @level=0, @default_formatter=#<Logger::Formatter:0x00000000e84ef0 @datetime_format=nil>, @formatter=#<Proc:0x00000000e84c48@/root/puppet-forge-server/lib/puppet_forge_server/logger.rb:31>, @logdev=#<Logger::LogDevice:0x00000000e84e00 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x00000000e84dd8 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x00000000e84d88>>>>]>, @uri_options={"User-Agent"=>"Puppet-Forge-Server/1.9.0", :allow_redirections=>:safe}, @cache=#<LRUCache:0xe701d0 @max_size=250, @default=nil, @eviction_handler=nil, @ttl=1800.0, @soft_ttl=0.0, @retry_delay=0.0, @pqueue=<PriorityQueue: [["https://forge.puppet.com/v3/modules/puppetlabs-stdlib", 1]]>, @counter=1, @size=1>>, @log=#<PuppetForgeServer::Logger:0x00000000e85080 @loggers=[#<Logger:0x00000000e84f40 @progname=nil, @level=0, @default_formatter=#<Logger::Formatter:0x00000000e84ef0 @datetime_format=nil>, @formatter=#<Proc:0x00000000e84c48@/root/puppet-forge-server/lib/puppet_forge_server/logger.rb:31>, @logdev=#<Logger::LogDevice:0x00000000e84e00 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x00000000e84dd8 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x00000000e84d88>>>>]>, @file_path="/v3/files">
[2016-12-19 09:25:12] INFO  WEBrick 1.3.1
[2016-12-19 09:25:12] INFO  ruby 2.0.0 (2014-11-13) [x86_64-linux]
[2016-12-19 09:25:12] WARN  TCPServer Error: Address already in use - bind(2)
[2016-12-19 09:25:12] INFO  WEBrick::HTTPServer#start: pid=4352 port=8181
[root@library-centos7 ~]# puppet module install --module_repository=http://127.0.0.1:8181 puppetlabs-stdlib
Notice: Preparing to install into /etc/puppet/modules ...
Notice: Downloading from http://127.0.0.1:8181 ...
Error: Request to Puppet Forge failed.
  The server being queried was http://127.0.0.1:8181/v3/releases?module=puppetlabs-stdlib
  The HTTP response we received was '503 Service Unavailable'

There seems to be a problem with the binding, although I'm not sure if this problem is related:

[root@library-centos7 ~]# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
tcp        0      0 0.0.0.0:8181            0.0.0.0:*               LISTEN      0          27455      4352/ruby

UPDATE: If I run curl on the address, I get some output, not sure if it is the correct output:

`[root@library-centos7 ~]# curl http://127.0.0.1:8181/v3/releases?module=puppetlabs-stdlib
{"pagination":{"next":false,"total":48},"results":[{"uri":"/v3/releases/puppetlabs-stdlib-0.1.1","module":{"uri":"/v3/modules/puppetlabs-stdlib","name":"stdlib","owner":{"username":"puppetlabs","uri":"/v3/users/puppetlabs"}},"metadata":{"name":"puppetlabs-stdlib","version":"0.1.1","author":"puppetlabs","summary":"Puppet Module Standard Library","license":"Apache","source":"git://github.com/puppetlabs/puppetlabs-stdlib","project_page":"https://github.com/puppetlabs/puppetlabs-stdlib","dependencies":[],"description":"Standard Library for Puppet Modules","types":[],"checksums":{"spec/spec_helper.rb":"ca19ec4f451ebc7fdb035b52eae6e909","CHANGELOG":"3669a98bf4e1ce6c011ebeb827847ee4","manifests/stages.pp":"5bd746c34c0cbb3fe7d27bfa941582e7","tests/init.pp":"1d98070412c76824e66db4b7eb74d433","README.markdown":"dbe2ed7059399f57eb7737dc763ee451","spec/spec.op

SNIP

The daemon log then:

[2016-12-19 09:25:12] INFO  WEBrick 1.3.1
[2016-12-19 09:25:12] INFO  ruby 2.0.0 (2014-11-13) [x86_64-linux]
[2016-12-19 09:25:12] WARN  TCPServer Error: Address already in use - bind(2)
[2016-12-19 09:25:12] INFO  WEBrick::HTTPServer#start: pid=4352 port=8181
[2016-12-19 09:35:56] INFO  Cache in RAM memory size: 1, MISS for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib
[2016-12-19 09:35:56] DEBUG  Fetching data for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib from remote server
[2016-12-19 09:36:01] DEBUG  Data for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib fetched, 1301725 bytes
[2016-12-19 09:36:01] INFO  Cache in RAM memory size: 2, MISS for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib&limit=20&offset=20
[2016-12-19 09:36:01] DEBUG  Fetching data for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib&limit=20&offset=20 from remote server
[2016-12-19 09:36:03] DEBUG  Data for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib&limit=20&offset=20 fetched, 740981 bytes
[2016-12-19 09:36:03] INFO  Cache in RAM memory size: 3, MISS for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib&limit=20&offset=40
[2016-12-19 09:36:03] DEBUG  Fetching data for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib&limit=20&offset=40 from remote server
[2016-12-19 09:36:04] DEBUG  Data for url: https://forge.puppet.com/v3/releases?module=puppetlabs-stdlib&limit=20&offset=40 fetched, 86803 bytes
127.0.0.1 - - [19/Dec/2016 09:36:04] "GET /v3/releases?module=puppetlabs-stdlib HTTP/1.1" 200 1394259 7.5882
library-centos7 - - [19/Dec/2016:09:35:56 CET] "GET /v3/releases?module=puppetlabs-stdlib HTTP/1.1" 200 1394259
- -> /v3/releases?module=puppetlabs-stdlib
[root@library-centos7 ~]# puppet --version
3.8.7
rndmh3ro commented 7 years ago

This seems to be a problem when using puppet 3.8.7. With Puppet 4.8.1 installed as a gem its working.

i11 commented 7 years ago

Hi,

I'll do some testing and come back as soon as I can. Thanks!