2013-05-27 13 views

答えて

5

librarian-puppetを使用して、サードパーティのすべてのモジュールを同期させていただきました。モジュールの位置とバージョンの設定をサポートしています。したがって、プロダクションと開発者はまったく同じコードを実行します。 使用量は1つのライナー

librarian-puppet install 
私たちは人形2回、1時間必要なモジュールを取得するための唯一の責任がある最小限のモジュールを実行するシェルスクリプトを持っている他のケースで

、その後、本格的な人形劇の流れでありますすべてのモジュールが利用可能です。

+0

私はまだこのモジュールの目的を理解できません。図書館員はカスタムのものだけでなく、人形のモジュールもインストールしますか? gitサブモジュールを使用しているときは、それらのすべてを1つのコマンドで更新できますか?標準的な人形モジュールをインストールするためにinstall-me.shスクリプトを作成しました。追加の大騒ぎなしに、ちょうどチェックアウトと方法を実行したい。 – holms

+0

okこれは基本的に図書館員と同じです。私はシェフに移行しましたが、あなたの答えはまだ有効です – holms

+0

モジュールはパペットクライアントによってインストールされていないので、実際には元の質問には答えられません。だから、まずあなたがそのライブラリをインストールする必要があり、それをPuppetでインストールすることはできません!最高の解決策はPuppetクライアント自体に組み込まれたものです... – anarcat

2

人形モジュールをインストールするための書き込みモジュールが可能だと思われます。puppet moduleツールのラッパーにすぎません。しかし、私はそのようなモジュールについてまだ聞いていませんでした。

インストールされたモジュールを変更する必要があるため、カスタマイズを行う必要があるため、このインストールメカニズムは一般的ではないと思います。そのような変更を管理するための実用的なツールは、バージョン管理システムです。たとえば、私たちのチームでは、/etc/puppetlabs/puppetというディレクトリをgit repostitoryに置いています。 Puppet Forgeからモジュールをインストールした後、バージョンコントロールにファイルを追加し、リモートgitサーバーにプッシュします。当社の内部開発モジュールもこのリポジトリに保管されています。このように、いくつかのパペットマスター(開発環境とプロダクト環境)はこの中央リポジトリと同期され、常にすべてのモジュールの最新バージョンを持っています。

3

"Puppet module" type and providerはまさにそれを行います。人形の

module { 'author/mymodule': 
    ensure => present, 
} 
module { 'puppetlabs/stdlib': 
    ensure => '2.6.0', 
} 
module { 'puppetlabs/stdlib': 
    ensure  => present, 
    modulepath => '/etc/puppet/modules', 
} 

最近のバージョンもあなたがPuppet forgeから任意の人形モジュールをインストールすることができますpuppet moduleコマンドを持っている、例:

$ puppet module install rcoleman/puppet_module 
Notice: Preparing to install into /home/anarcat/.puppet/modules ... 
Notice: Created target directory /home/anarcat/.puppet/modules 
Notice: Downloading from https://forgeapi.puppetlabs.com ... 
Notice: Installing -- do not interrupt ... 
/home/anarcat/.puppet/modules 
└── rcoleman-puppet_module (v0.0.3) 

他の選択肢が含まを:

  • librarian
  • r10k(司書の代替としてcited)、動的な環境をサポートし、より多くの

R10K今人形ENTREPRISE 2015.03の一部であり、それは確かにベストプラクティスと見なすことができます。

+1

これは簡単で素晴らしいですが、新しいバージョンの人形の[問題](https://github.com/ryanycoleman/puppet_module_provider/issues/4) – vikas027

+1

@ vikas027私は 'puppet module'コマンドを含む他のオプションを追加し、r10kをより重視しました。 – anarcat

+0

問題のために 'rcoleman/puppet_module'を避けてください – alekwisnia

0

私はこれをしなかったし、ここで

exec { 'puppet-fstab': 
    path => '/bin:/usr/bin', 
    command => 'puppet module install -i /usr/share/puppet/modules/AlexCline-fstab >>/tmp/err.log', 
} 
+0

もちろん、私はこれを動作させた直後に、私が望んだことを実行する"マウント "を組み込み、しかし、うまくいけば、この他の人は正しい方向に誰かを指します。 –

4

を動作するように見えた私の例である:

$module_stdlib = 'puppetlabs-stdlib' 
    exec { 'puppet_module_stdlib': 
    command => "puppet module install ${module_stdlib}", 
    unless => "puppet module list | grep ${module_stdlib}", 
    path => ['/bin', '/opt/puppetlabs/bin'] 
    } 

の$ module_stdlibは、私がインストールすることwhantモジュールであるところ。 /binのパスは、grepが由来するパスです。 /opt/puppetlabs/binは、インストール時に人形のバイナリが存在するパスです。

+0

これは動作しますが、引用符とハイフンには注意してください! –

関連する問題