2015-02-04 2 views
0

클라이언트의 디렉토리에 tar 파일을 배포하는 모듈을 만들고 있습니다. 따라서 tar 파일이 변경 될 때마다 '20150204130312'와 같은 datetime 스탬프가있는 새 디렉토리에 배포됩니다. 이 시점까지 잘 작동합니다. 모듈의 디렉토리에 해당 날짜 시간 스탬프를 생성 중입니다.퍼핏은 Exec 후에 만 ​​타임 스탬프가 포함 된 링크를 만듭니다.

모듈이 실행될 때마다 날짜와 시간이 매번 생성되지만 tar 파일이 정상적으로 업데이트되면 디렉토리 만 생성됩니다. 이 후 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"], 
} 

를 사용하여 모듈에서 생성 된 타임 스탬프를 가지고있다. 나는 링크를 만드는 데 exec를 사용하고 싶지 않다. 이것이 가능한지 나는 모른다.

답변

2

대신 require 사용 subscribe 다음 subscribe 매개 변수가 자동으로 require 가정되고 간부을 보장

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"] 
} 

File["/tmp/${targz}"] 자원 변경하면 실행됩니다.

희망이 도움이되었습니다.

관련 문제