我正在研究一个模块,将tar文件部署到客户端的目录中。因此,每当tar文件发生更改时,它都会部署到一个带有日期时间戳的新目录,例如' 20150204130312' 。它一直工作到这一点。我正在为模块中的目录生成日期时间戳。
每当模块运行时,每次都会生成日期和时间,但只有tar文件更新时才会创建目录。在此之后,我想创建一个指向提取tar的文件夹的链接。我希望仅在提取tar文件时才创建该链接。但是,即使没有提取tar,每当链接更新时,每当木偶运行时,每当木偶运行时都会更改。
我尝试在exec中使用notify并在文件资源上使用require,但这不起作用。 $ dir使用
在模块上生成时间戳$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"],
}
我应该如何创建依赖项,以便在exec中提取tar文件时仅创建链接。我不想使用exec来创建链接。我不知道这是否可能。
答案 0 :(得分: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
,并确保仅在File["/tmp/${targz}"]
资源更改时执行exec。
希望这有帮助