0

由 puppet master 控制执行 exec 或包类型

在 linux 上安装包 X,除非 X 已经安装:

package { "X": }

&&

在 Windows 上安装可执行文件 Y,除非 Y 已经安装:

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

puppet master 无法控制文件类型的执行,因为除非 puppet 文件类型中不允许属性

木偶文件属性

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

从共享(samba)文件夹执行安装程序而不是先将其复制到代理系统不能解决问题

  • Puppet 在多个外部系统上运行
  • 在每次 puppet 运行期间,可执行文件、zip 和/或 tar.gz 包都被复制到远程系统,而这些文件在安装后被删除并且已经安装了软件
4

1 回答 1

1

我解决这个问题的方式,可能有更好的方法来做到这一点:

  1. 创建用于安装产品的模块
  2. 在该模块中,编写一个自定义事实以发现已安装的版本
  3. 在安装程序类中,将所有内容包装在“if”中

IE

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

然后,您可以做其他整洁的事情,例如审核您环境中的软件

于 2013-09-14T08:31:19.203 回答