2014-02-09 24 views
4

如果在puppet文件中不存在目录,如何执行命令?执行命令,除非在puppet中存在目录

exec { "my_exec_task": 
    command => "tar zxf /home/user/tmp/test.tar.gz", 
    unless => "test -d /home/user/tmp/new_directory", 
    path => "/usr/local/bin/:/bin/", 
} 

我得到错误:“无法评估:找不到命令'测试'”。这也是检查目录是否存在的最佳做法吗?

回答

5

test工作在/usr/bin,所以将它添加到路径可以解决错误。

unless => 'bash -c "test -d /home/user/tmp/new_directory"', 

也应该工作。但我认为正确的方法是使用creates

exec { "my_exec_task": 
    command => "tar zxf /home/user/tmp/test.tar.gz", 
    creates => "/home/user/tmp/new_directory", 
    path => "/usr/local/bin/:/bin/", 
} 
1

实际的问题是在路径: 路径=> [ '在/ usr/local/bin目录', '/ sbin目录', '/箱',“/ usr/sbin','/ usr/bin']