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

Tro*_*ike 4 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/",
}
Run Code Online (Sandbox Code Playgroud)

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

Rau*_*res 5

test为我工作/usr/bin,所以将其添加到路径可以解决错误.

unless => 'bash -c "test -d /home/user/tmp/new_directory"',
Run Code Online (Sandbox Code Playgroud)

也应该工作.但我认为正确的方法是使用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/",
}
Run Code Online (Sandbox Code Playgroud)