web-dev-qa-db-ja.com

Puppetを使用してソフトウェアの「バンドル」をインストールする

現在、構成/システム管理の実装を調査中であり、Puppetのデモをかなり行っています。 Puppetは、「このパッケージがインストールされ、この構成ファイルが存在し、このサービスが実行されていることを確認してください」というやや単純なExcelのようです。

あまりうまく機能しないソフトウェアを管理する良い実例を見つけることができないようです。いくつかの例:

  • IBM DB2(インストーラーを使用してtarball経由で配布、「フィックスパック」は類似しています)
  • Simpana CommVault(ncursesインターフェースを備えたインストーラーを使用しますが、だまされた場合は「回答」ファイルを受け入れます)
  • AccuRev(バイナリインストーラー、「answer」ファイルをサポート)
  • VMWareツール(バイナリインストーラー)

このようなソフトウェアを環境に統合するために、Puppetユーザーはどのようなアプローチを採用しましたか?

6
Kyle Smith

私はローカルで作成されたファイルでサーバーを維持し、そのようなソフトウェア用の.debまたは.rpmパッケージを自分で作成します。

わざわざ何もしなかった場合は、ファイルをダウンロードするためにexec wgetを実行し、抽出メソッドを使用してexecを実行し、creates属性がメインを指すようにします。バイナリ。ただし、更新は処理されません。

更新を処理するには、インストールをexecrefreshonly => trueにし、notifyexecwgetを配置します。

サンプル:

exec { "/usr/bin/wget http://fileserver.domain/jboss/jboss-${version}.prd.tar.gz -O /tmp/jboss.tgz":
    creates => '/tmp/jboss.tgz',
    require => Package['wget'],
    alias   => 'wget_jboss',
}

exec { '/bin/tar xzvf /tmp/jboss.tgz':
    cwd     => '/opt',
    creates => "/opt/jboss-${version}/bin",
    user    => 'jboss',
    group   => 'jboss',
    require => [ User['jboss'], Exec['wget_jboss'], File["/opt/jboss-${version}"], ],
    before  => Service['jboss'],
    alias   => 'untar_jboss',
}
5

execリソースは、他のパッケージタイプの1つにうまく適合しないものを管理するためのキャッチオールです。

コマンドラインで何かを無人で実行でき、ファイルの存在を確認してインストールを確認できる場合は、puppetにそれを処理させることができるはずです。

例の1つであるVMwareToolsには、puppet module forgeサイトにモジュールがあります ここ 。 init.ppファイル( ここ )からわかるように、インストールプロセスは主にexecリソースを介して実行されます。

3
Shane Madden

1台のマシンにインストールして実行し、インストールしたファイルをtar/rpm/debに配置するだけです。もちろん、簡単ではない場合もあります。

1
rvs