除非安装了软件,否则将文件从Puppet master复制到代理

时间:2013-09-13 22:32:32

标签: ruby puppet

由木偶主控制执行exec或包类型

在Linux上安装软件包X,除非已经安装了X:

package { "X": }

&安培;&安培;

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

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

木偶大师执行文件类型无法控制,除非在木偶文件类型中不允许属性

puppet file attributes

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

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

  • 在多个外部系统上执行Puppet运行
  • 在每次木偶运行期间,将可执行文件,拉链和/或tar.gz软件包复制到远程系统,而安装和软件安装后已删除的文件已经

1 个答案:

答案 0 :(得分:1)

我解决这个问题的方式,可能有更好的方法来实现这一目标:

  1. 创建用于安装产品的模块
  2. 在该模块中,编写用于发现已安装版本的自定义事实
  3. 在安装程序类中,将所有内容包装在“if”
  4. class productx::install (
      $version,
      $installer_path,
    ) {
      # productx_version is a fact
      if ! $::productx_version {
        do the install
      }
    }
    

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