Ruby Puppet仅在Exec之后创建带有时间戳的链接
我正在开发一个模块,将tar文件部署到客户端的目录中。因此,每当tar文件发生更改时,它就会部署到一个带有日期戳的新目录中,如“20150204130312”。到目前为止,一切都很顺利。我正在为模块中的目录生成那个日期时间戳 每当模块运行时,每次都会生成日期和时间,但只有在tar文件更新时才创建目录,这很好。在此之后,我想创建一个链接,指向提取tar的文件夹。我希望只有在提取tar文件时才能创建该链接。但是现在,每当puppet运行时,因为日期和时间戳每次都会更改,即使没有提取tar,链接也会更新 我尝试在exec中使用notify,并在文件资源上使用require,但不起作用。 $dir使用在模块上生成的时间戳Ruby Puppet仅在Exec之后创建带有时间戳的链接,ruby,puppet,Ruby,Puppet,我正在开发一个模块,将tar文件部署到客户端的目录中。因此,每当tar文件发生更改时,它就会部署到一个带有日期戳的新目录中,如“20150204130312”。到目前为止,一切都很顺利。我正在为模块中的目录生成那个日期时间戳 每当模块运行时,每次都会生成日期和时间,但只有在tar文件更新时才创建目录,这很好。在此之后,我想创建一个链接,指向提取tar的文件夹。我希望只有在提取tar文件时才能创建该链接。但是现在,每当puppet运行时,因为日期和时间戳每次都会更改,即使没有提取tar,链接也会更
$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创建链接。我不知道这是否可行。使用
订阅而不是要求:
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
,并将确保仅当文件[“/tmp/${targz}”]
资源更改时才执行exec
希望这有帮助