2016-05-04 60 views
0

我安装在我的site.pp如何在木偶中安装centos软件包?

class packages { 
    Package { ensure => 'installed' } 
    package { 'python-devel': } 
    package { 'blas-devel': } 
    package { 'lapack-devel': } 
} 

,但没有一类,似乎是这样吗? 当我运行

pip install scipy 

我还是拿到Python.h不能这么编我把它蟒蛇devel的没有安装

回答

1

你有定义类的packages',但你不显示类被分配给任何节点。这就像写一个函数,但从来没有调用它。

您需要声明该类将其分配给特定节点或所有节点(取决于声明的上下文)。有对那几个不同的形式,但你可以做最简单的事情将是你的类定义的右括号后添加...

include 'packages' 

...就行了。

结果仍然是相当差的形式,因为类应该在模块中定义,而不是在site.pp中定义,并且声明很少出现在顶部范围(在任何节点块,类定义或类型定义之外),但它将指示Puppet在运行时确保指定的包已安装。

1

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

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

您将类中的每个软件包定义为单独的软件包资源。然后,您需要在您的site.pp中将“mypython”包含在要安装它们的节点中。跑傀儡,你应该很好。

+1

OP提供的代码很好。他为'Package'资源声明资源默认值,然后依赖它们来声明特定的'Package'实例。你的代码在语义上等同于他的。 –

+0

我改变''我的python''只是'my-python'它工作后我不知道它为什么不喜欢引号。对于我原本是复制:http://www.puppetcookbook.com/posts/install-multiple-packages.html – KillerSnail