繁体   English   中英

除非已安装软件,否则将文件从Puppet主服务器复制到代理

[英]Copy file from Puppet master to agent unless software is installed

通过人偶主控执行exec或程序包类型

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

package { "X": }

&&

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

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

由于除非人偶文件类型中不允许使用属性,否则人偶主文件无法执行文件类型

人偶文件属性

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

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

  • 木偶运行在多个外部系统上执行
  • 可执行文件,zip和或tar.gz程序包在每次运行木偶时都会复制到远程系统,而这些文件在安装和安装软件后即已删除

我解决这个问题的方式,也许会有更好的方法做到这一点:

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

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

然后,您可以执行其他一些整洁的工作,例如在您的环境中审核软件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM