在puppet代理上应用清单时出错

在puppet代理上应用清单时出错,puppet,devops,Puppet,Devops,我使用以下命令在puppet master上安装了docker模块: puppet module install garethr-docker --version 5.3.0 之后,我将其包含在site.pp文件中: node 'test02.edureka.com' { include 'docker' docker::image { 'ubuntu': image_tag => 'precise' } } 但当我在代理机器中应用它时,我得到了一个错误:

我使用以下命令在puppet master上安装了docker模块:

puppet module install garethr-docker --version 5.3.0
之后,我将其包含在site.pp文件中:

node 'test02.edureka.com'
{
 include 'docker'
 docker::image 
  { 
  'ubuntu':
  image_tag => 'precise'
  }
}
但当我在代理机器中应用它时,我得到了一个错误:


我的Puppet版本是3.8.7。

您的错误消息将问题归因于文件
/etc/modules/Puppet/apt/manifests/init.pp
,该文件属于“apt”模块,可能是“puppetlabs apt”。问题的本质在于模块DSL代码中出现的单词
Variant
。这是一个与Puppet 4中引入的数据类型系统相关联的关键字,但在Puppet 3.x中,它是一个普通标识符,没有特殊意义。这往往表明问题在于您正在服务器上运行Puppet 3.x(最新版本为5.3.3),并且您安装的puppetlabs apt版本(v3.0.0)不兼容

事实上,它至少需要Puppet的4.7.0版本。版本2.4.0是声称与Puppet 3兼容的最后一个版本,因此您应该尝试降级到该版本


我不确定为什么模块工具选择适合您的puppetlabs v3.0.0,尽管它不兼容。你可以认为这是一个反对傀儡的问题,但是由于傀儡3不再积极发展,它可能不值得付出努力。事实上,这个问题很可能已经在较新的版本中得到了解决。

看起来您的模块需要的Puppet版本(至少是v4)要比您在服务器上运行的版本(大概是v3.x)更新。在Puppet forge,它说5.3.0版本与Puppet>=3.4.0兼容。仔细查看错误消息,似乎出现错误的文件实际上位于模块依赖项中的puppetlabs apt包中。但在我看来,问题的本质仍然是该模块需要一个最近的傀儡。可能您可以将该模块降级为与Puppet 3兼容的版本。@JohnBollinger您的评论是正确的答案。是否要转换?好的,@MattSchuchard,完成。一个有趣的补充说明是,下载的docker模块已被弃用,取而代之的是更新的模块:。