0

制御可能なパペット マスターによる exec またはパッケージ タイプの実行

X がまだインストールされていない場合は、Linux にパッケージ X をインストールします。

package { "X": }

&&

Y がまだインストールされていない場合は、実行可能ファイル Y を Windows にインストールします。

exec { "packageYInstalled":
    command => "packageY /S",
    require => "C:\\temp\\packageY",
    unless => "packageYinstalled";
}

パペット ファイル タイプで属性が許可されていない限り、パペット マスターによるファイル タイプの実行は制御できません

パペットファイルの属性

file { "packageYCopiedToTempFolder": }
    path => "C:\\temp\\packageY",
    source => "puppet:///files/packageY";
}

最初にエージェント システムにコピーするのではなく、共有 (samba) フォルダーからインストーラーを実行しても問題は解決しません。

  • 複数の外部システムで実行される Puppet 実行
  • 実行可能ファイル、zip、または tar.gz パッケージは、パペットの実行ごとにリモート システムにコピーされますが、これらのファイルはインストール後に削除され、ソフトウェアは既にインストールされています。
4

1 に答える 1

1

私がこれに取り組む方法、そしてこれを行うためのより良い方法があるかもしれません:

  1. 製品をインストールするためのモジュールを作成します
  2. そのモジュールで、インストールされているバージョンを検出するためのカスタム ファクトを記述します。
  3. インストーラー クラスで、すべてを 'if' でラップします。

すなわち

class productx::install (
  $version,
  $installer_path,
) {
  # productx_version is a fact
  if ! $::productx_version {
    do the install
  }
}

その後、環境内のソフトウェアを監査するなど、他のきちんとしたことを行うことができます

于 2013-09-14T08:31:19.203 に答える