2016-05-04 57 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