2015-02-04 31 views
0

我正在研究將tar文件部署到客戶端目錄中的模塊。所以無論何時tar文件改變,它都會部署到一個帶有日期時間戳的新目錄(如「20150204130312」)。在這一點上它工作得很好。我爲模塊中的目錄生成日期時間戳。Puppet僅在執行後創建帶時間戳的鏈接

每當模塊運行日期和時間生成的每個時間,但該目錄僅當這是很好的tar文件更新創建。在此之後,我想創建一個指向提取焦油的文件夾的鏈接。我只想在提取tar文件時創建鏈接。但是現在,每當木偶運行時,日期和時間標記每次都會更改,即使未提取焦油,鏈接也會更新。

我嘗試使用exec中的通知,並要求在文件資源上,但不起作用。 $目錄在使用

$rel_dir= "/data/agrod/releases"; 
$dir= generate('/bin/date', '+%Y%m%d%H%M%S') 
exec { "untar $targz": 
    command => "/bin/mkdir -p $rel_dir/$dir/; /bin/tar xzvf /tmp/$targz -C $rel_dir/$dir", 
    refreshonly => true, 
    require => File["/tmp/$targz"], 
    notify => File["/data/agrod/current"], } 

file { "/data/agrod/current": 
ensure => 'link', 
target => "/data/agrod/$dir", 
require => Exec["untar $targz"], 
} 

我應該如何創建依賴,所以當tar文件在EXEC提取該鏈接僅被創建的模塊所產生的時間戳。我不想使用exec來創建鏈接。我不知道這是否可能。

回答

2

代替require使用subscribe

exec { "untar ${targz}": 
    command => "/bin/mkdir -p $rel_dir/$dir/; /bin/tar xzvf /tmp/$targz -C $rel_dir/$dir", 
    refreshonly => true, 
    subscribe => File["/tmp/${targz}"], 
    notify => File["/data/agrod/current"] 
} 

subscribe參數將自動假設require並確保exec只當File["/tmp/${targz}"]資源變更執行。

希望這會有所幫助