如何在puppet中安装centos软件包?

如何在puppet中安装centos软件包?,centos,vagrant,puppet,Centos,Vagrant,Puppet,我在我的site.pp中设置了一个类 class packages { Package { ensure => 'installed' } package { 'python-devel': } package { 'blas-devel': } package { 'lapack-devel': } } 但似乎什么都没发生? 当我跑的时候 pip install scipy 我仍然知道Python.h无法编译,所以我认为Python-devel没有安装

我在我的site.pp中设置了一个类

class packages {
    Package { ensure => 'installed' }
    package { 'python-devel': }
    package { 'blas-devel': }
    package { 'lapack-devel': }
}
但似乎什么都没发生? 当我跑的时候

pip install scipy
我仍然知道
Python.h
无法编译,所以我认为Python-devel没有安装您已经定义了类“
包”
”,但是您没有显示将该类分配给任何节点。这就像编写一个函数,但从不调用它

您需要声明该类以将其分配给特定节点或所有节点(取决于声明的上下文)。有几种不同的形式,但最简单的方法是添加

include 'packages'
。。。在类定义的右大括号后的行上

结果仍然是非常糟糕的,因为类应该在模块中定义,而不是在
site.pp
中定义,声明很少出现在顶部范围(任何节点块、类定义或类型定义之外),但它会指示Puppet在运行时,它应该确保您指定的包已安装。

您已经定义了类“
packages
”,但没有显示将该类分配给任何节点。这就像编写一个函数,但从不调用它

您需要声明该类以将其分配给特定节点或所有节点(取决于声明的上下文)。有几种不同的形式,但最简单的方法是添加

include 'packages'
。。。在类定义的右大括号后的行上


结果仍然是非常糟糕的,因为类应该在模块中定义,而不是在
site.pp
中定义,声明很少出现在顶部范围(任何节点块、类定义或类型定义之外),但它会指示Puppet在运行时,它应该确保您指定的软件包已安装。

实际上,您为模块编写代码的方式看起来并不正确。我会尝试下面的方法

class 'my-python' {
  package {'python-devel':
     ensure => installed,
  }
  package {'lapack-devel':
     ensure => installed,
  }
  package {'python-devel':
     ensure => installed,
  }
}

您可以将类中的每个包定义为单独的包资源。然后,您需要在site.pp中为要安装mypython的节点“包含mypython”。运行puppet,您应该会做得很好。

事实上,您为模块编写代码的方式看起来并不正确。我会尝试下面的方法

class 'my-python' {
  package {'python-devel':
     ensure => installed,
  }
  package {'lapack-devel':
     ensure => installed,
  }
  package {'python-devel':
     ensure => installed,
  }
}

您可以将类中的每个包定义为单独的包资源。然后,您需要在site.pp中为要安装mypython的节点“包含mypython”。运行puppet,您应该很好。

OP提供的代码很好。他为
Package
资源声明资源默认值,然后依赖它们来声明特定的
Package
实例。您的代码在语义上与他的代码相同。在我将“my-python”更改为“my-python”后,我不知道它为什么不喜欢引号。对于ref,我最初是在复制:OP提供的代码很好。他为
Package
资源声明资源默认值,然后依赖它们来声明特定的
Package
实例。您的代码在语义上与他的代码相同。在我将“my-python”更改为“my-python”后,我不知道它为什么不喜欢引号。对于ref,我最初复制的是: