在CentOS 6上使用Puppet部署模块时出现Ruby错误

时间:2017-07-15 15:51:44

标签: puppet centos6

我在运行CentOS 6的机器上安装了Puppet master和agent

一切顺利,直到我尝试部署一个简单的示例模块:我得到了一个错误,在图片上解释。

尝试编辑文件没有帮助,每次从存储库

实际更新文件

我尝试运行一个导致相同错误的不同模块

Error Screenshot

1 个答案:

答案 0 :(得分:0)

错误是因为Ruby代码的格式不适用于旧的Ruby。 CentOS 6上游Ruby包是1.8.7,这是一个超级旧的Ruby版本,并且已经3 years since 2014的EOL。

为了解决这个问题,Puppet开始将Ruby和其他依赖项打包为all-in-one package since Puppet 4的一部分。这意味着当涉及EOL Ruby,OpenSSL和任何其他依赖时,它们没有任何依赖性:它们作为单个RPM捆绑和支持,而不会影响系统包。

这也意味着您不会破坏任何需要不同系统Ruby的应用程序,并且通常会使Puppet变得更容易。

除此之外,CentOS中的Puppet版本是3.X,which is also EOL。你应该升级到Puppet 4.这是一个方便的脚本,它将在CentOS 6上安装Puppet 4代理软件包:https://github.com/petems/puppet-install-shell

如果您因任何原因仅限于使用Puppet 3,那么有一些不太优选的解决方案:

  • 为CentOS 6下载一个新的Ruby RPM(例如来自this Github repo)或CloudPackage.io repo(例如我为CentOS 6 Ruby软件包https://packagecloud.io/petems/ruby2/install制作的那个)
    • 缺点:官方不支持这些RPM,可能会出现无意的问题
  • 分叉模块以更改Ruby代码
    • 缺点:维护成本很高,每次上游模块发生更新时都必须这样做。