无法使用 r10k 拉取 Puppet Forge 模块

无法使用 r10k 拉取 Puppet Forge 模块

我有一个似乎可以正常运行的 r10k 设置,用于将分支发布为环境,但是当我运行命令通过

sudo /opt/puppetlabs/puppet/bin/r10k deploy environment -p -v

我明白了

INFO     -> Deploying environment /etc/puppetlabs/code/environments/production
INFO     -> Environment production is now at cd62f3bb36117b1418672a1039b8212aa8bb36dd
INFO     -> Deploying Puppetfile content /etc/puppetlabs/code/environments/production/modules/ntp
ERROR    -> stream error
INFO     -> Deploying Puppetfile content /etc/puppetlabs/code/environments/production/modules/stdlib
ERROR    -> stream error

我的 /etc/puppetlabs/r10k/r10k.yaml

:cachedir: '/var/cache/r10k'

# A list of git repositories to create
:sources:
  :operations:
    remote: 'git@git:sysops/puppet.git'
    basedir: '/etc/puppetlabs/code/environments'

我的 Puppetfile

forge 'forge.puppetlabs.com'

mod 'puppetlabs/ntp', '4.1.0'
mod 'puppetlabs/stdlib'

这些似乎都与我无关,只是想先回答这个问题。如果我在 Puppet 主机上进行 HTTPS 数据包捕获,我会得到一堆像这样的出站流量

15:19:14.507310 IP puppet.domain.net.33955 > ec2-52-10-130-237.us-west-2.compute.amazonaws.com.https: Flags [.], ack 17926, win 545, options [nop,nop,TS val 129210401 ecr 2944333247], length 0

以及一堆入站的

15:19:14.520146 IP ec2-52-10-130-237.us-west-2.compute.amazonaws.com.https > puppet.domain.net.33955: Flags [.], seq 20822:22270, ack 628, win 227, options [nop,nop,TS val 2944333252 ecr 129210401], length 1448

所以一切都在沟通,但 r10k 的“流错误”仍然毫无用处。如果您使用调试,-v debug2您会在模块上收到相同的消息,只是前面一堆,后面一堆。

这个问题与https://stackoverflow.com/questions/35712872/r10k-ruby-connection-error-to-the-forge但该问题被标记为已解决但实际上并未得到解决,因此在我看来并不是重复的。

答案1

似乎在构建 ruby​​ rugged 模块(这是 r10k 依赖项)时,它使用的是在 libgit2 中编译的 zlib 符号,而不是操作系统提供的符号。对我来说,删除 rugged 模块 gem、在系统上安装 zlib-devel 包并再次安装 rugged 就足够了。

gem uninstall rugged
yum install zlib-devel
gem install rugged

如果你想确认你的问题是否相同,只需在 ruby​​ 控制台(irb)中运行以下代码:

require 'rugged'
require 'zlib'
Zlib::Inflate.new(32 + Zlib::MAX_WBITS)

它应该引发 Zlib::StreamError。

引导我找到这个解决方案的来源:

https://github.com/prontolabs/pronto/issues/23

https://github.com/libgit2/rugged/issues/705

答案2

我也有同样的情况,我在 Ubuntu 16.04 上使用 PC1 的软件包,但 r10k 运行的是系统 Ruby。模糊的“流错误”似乎来自 Ruby gem 依赖项之一,这就是为什么 r10k 中的详细程度不会提供任何更有用的输出。

相关内容