2016-05-04 15 views
0

I私site.ppでセットアップクラスpuppetにcentosパッケージをインストールするには?

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

何も起こっているように見えますか? 私は

pip install scipy 

を実行したときに、私はまだPython.hは、私はPythonの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

私は '' my-python''を '' my-python''に変更した後、なぜ引用符が好きではないのか分かりません。 refについては、私は元々コピーしていた:http://www.puppetcookbook.com/posts/install-multiple-packages.html – KillerSnail

関連する問題