如何编程puppet仅在tarball不同的情况下提取tarball

如何编程puppet仅在tarball不同的情况下提取tarball,puppet,Puppet,我想用木偶来做这个: 第一次运行傀儡,提取tarball的内容(存储在某个服务器上) 后续木偶运行时,仅当tarball与先前运行不同时才提取tarball的内容 关于如何在Puppet中实现这一点,有什么建议吗?我正在努力解决如何在Puppet中使用“onlyif”子句来实现这一点。您只需运行一次Puppet,就可以通过以下方式实现: $filename = 'somefile' $path = '/somepath' file { 'filename': ensure => fil

我想用木偶来做这个:

  • 第一次运行傀儡,提取tarball的内容(存储在某个服务器上)
  • 后续木偶运行时,仅当tarball与先前运行不同时才提取tarball的内容

  • 关于如何在Puppet中实现这一点,有什么建议吗?我正在努力解决如何在Puppet中使用“onlyif”子句来实现这一点。

    您只需运行一次Puppet,就可以通过以下方式实现:

    $filename = 'somefile'
    $path = '/somepath'
    
    file { 'filename':
     ensure => file,
     source => 'file:/<SOMEPATH>/<SOMEFILE>',
     path   => "${path}/${filename}",
     notify => Exec['extract tar'],
    }
    
    exec { 'extract tar':
     refreshonly => true,
     command     => "tar --overwrite -xf ${filename}",
     path        => '/bin',
     cwd         => $path,
    }
    
    $filename='somefile'
    $path='/somepath'
    文件{'filename':
    确保=>文件,
    source=>'文件://',
    path=>“${path}/${filename}”,
    notify=>Exec['extract tar'],
    }
    执行{“提取焦油”:
    refreshonly=>true,
    command=>“tar--overwrite-xf${filename}”,
    路径=>'/bin',
    cwd=>$path,
    }
    

    但我认为使用puppet/archive模块会是一个更干净的解决方案。

    使用或不使用
    归档
    模块?理想情况下,您是从主机上交付这个tarball还是它已经在那里了?它已经在那里了,我不需要主机推动它不是每次运行,无论tar是否更新?否。当refreshonly设置为true时,exec仅在从其他资源收到通知时才会运行。文件资源仅在对系统进行更改时发送通知,即当文件更改时。