除非目录存在于puppet中,否则exec命令

时间:2014-02-09 17:07:21

标签: ruby 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/",
}

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

实际问题在路径中: path => [' / usr / local / bin',' / sbin',' / bin',' / usr / sbin',&#39 ;在/ usr /仓' ]