第三方存储库

第三方存储库

你们知道如何在装有 Puppet 3.6 的 CEntOS 6.7 服务器上正确运行 r10k 吗?这是否自相矛盾?

我检查了 r10k 源代码的要求列表:https://github.com/puppetlabs/r10k#requirements

看起来它需要 Ruby 1.9。还算公平。

但...

$ facter rubysitedir rubyversion
rubysitedir => /usr/lib/ruby/site_ruby/1.8
rubyversion => 1.8

从此,寻找传说中的红宝石的卑鄙旅程开始了。

第三方存储库

但是大多数第三方存储库不提供适用于 CEntOS 6.7 的 Ruby 1.9。

我无法正确安装我在 Remi 的仓库里找到了一个包,由于缺少 mockbuild 用户而失败。我认为只有从源代码构建时才需要这样做。

Ruby‘管理器’

我安装了 RVM。

但是,这是必需的glibc = 2.12-1.166.el6_7.7,而我的系统没有这个特定的版本可用(出于充分的理由)。

无论如何,这只对特定用户有效。如果安装了 RVM,系统用户需要使用 Ruby,情况可能会变得很奇怪。rbenv,这可能会缓解这个问题,也给了我同样的关于 glibc 的废话:

$ mkdir ~/.tmp && export TMPDIR=~/.tmp && rbenv install 1.9.3-p551  ##  How did it come to this...
    Downloading yaml-0.1.6.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749
Installing yaml-0.1.6...

BUILD FAILED (CentOS release 6.7 using ruby-build 20160913)

Inspect or clean up the working tree at /export/home/nger/.tmp/ruby-build.20161117064013.21057
Results logged to /home/nger/.tmp/ruby-build.20161117064013.21057.log

Last 10 log lines:
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/nger/.tmp/ruby-build.20161117064013.21057/yaml-0.1.6':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

系统 Ruby

无论如何,我当时认为我可以使用 Ruby 1.8,CEntOS 6 的系统 Ruby:

1.8 版 Monkey 补丁:)

然而,r10k 开发人员后来取消了对 Ruby 1.8 的支持:(

木偶收藏

接下来,应评论者的要求,我检查了 Puppet Collections 文档。

A。http://yum.puppetlabs.com/el/6/与 Ruby 无关。

B. puppet-agent 包不会更新系统 Ruby,正如(我认为的?)广告中说的: 在此处输入图片描述

在此处输入图片描述

但是,安装后,看起来确实为 Puppet 生成了一个定制的 Ruby。有关更多详细信息,请参阅下面的答案。

CEntOS 6 是否也受 r10k 支持?

CEntOS 6 支持 Ruby 1.9 吗?

我快要放弃了,serverfault.com 就是我的“万福玛利亚”剧。

当然,除了实际工作,我还有更多选择。我可能会乞求 RedHat 软件包维护者更新他们的 Ruby,或者缠着某些人(你知道你是谁)加快他们的 CEntOS 7 工作步伐……

笔记:

注1:我没有在serverfault上找到太多关于这个问题的信息。 https://serverfault.com/search?q=r10k+on+CEntOS+6

注2:我在研究以下先前问题时提出了这个问题:

如何添加第三方 Puppet 模块而不将它们提交到源代码管理中?

答案1

r10k 1.5.1 是支持 ruby​​ 1.8.7 的最后一个版本。即使你 gem install 1.5.1,也会安装比发布时更新的依赖项,这些依赖项也与 ruby​​ 1.8.7 不兼容。显然会导致非 r10k 错误,这也是你正在查看此答案的原因。

yum install ruby-devel rubygems rubygem-rspec rubygem-rake
gem install --no-rdoc --no-ri semantic_puppet -v 0.1.3
gem install --no-rdoc --no-ri r10k -v 1.5.1

答案2

答案显然是在 Puppet Collections 中:

$ curl -O https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm
$ sudo rpm -ivh puppetlabs-release-pc1-el-6.noarch.rpm
$ sudo yum -d 1 install -y puppet-agent
$ /opt/puppetlabs/puppet/bin/ruby --version
ruby 2.1.9p490 (2016-03-30 revision 54437) [x86_64-linux]

r10k就可以很好地完成这个。

但是,这会为您提供更高版本的 Puppet。

$ /opt/puppetlabs/bin/puppet --version
4.8.0

但是,强制安装早期版本的puppet-agent软件包无法解决这个问题:

$ sudo yum info puppet-agent-1.0.0 | grep 'puppet ('
        : puppet (4.0.0)

这里真正的答案是编译您自己的 Ruby 版本,并通过 FTP 或内部 repo 使其可供您的系统使用。

回答这个明确的问题:

是的,您可以使用 CURL、RPM 和 YUM 在 CENTOS 6 上安装 r10k。

至于在这样做的同时,你是否可以保留旧的、即将消亡的 Puppet 3.6,这仍然悬而未决。

(注:管理层为了保护那些有罪和/或愚蠢的人,故意省略了一些输出。)

相关内容