我有一个似乎可以正常运行的 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。
引导我找到这个解决方案的来源:
答案2
我也有同样的情况,我在 Ubuntu 16.04 上使用 PC1 的软件包,但 r10k 运行的是系统 Ruby。模糊的“流错误”似乎来自 Ruby gem 依赖项之一,这就是为什么 r10k 中的详细程度不会提供任何更有用的输出。