如何检查puppet中是否存在目录

时间:2013-11-20 22:44:52

标签: puppet

尝试使用puppet在rpi上创建自动启动目录。仅当位置不存在时才应该mkdir

以下是当前代码:

exec { "mkdir_autostart":
command => "mkdir /home/pi/.config/autostart",
unless => "[ -d /home/pi/.config/autostart ]",
path    => "/usr/local/bin/:/bin/",
}

这是我得到的:

err: Failed to apply catalog: Parameter unless failed on Exec[mkdir_autostart]: 
'[ -d  /home/pi/.config/autostart ]' is not qualified and no path was specified.
Please qualify the command or specify a path.

还尝试使用onlyif语句,但产生了同样的错误。我做错了什么?

编辑:

添加路径(path => "/usr/local/bin/:/bin/",),现在获取:

err: /Stage[main]/auto::Sign/Exec[mkdir_autostart]: Could not evaluate: Could not find command '['

2 个答案:

答案 0 :(得分:5)

您应该使用“文件”类型:

file { "/home/pi/.config/autostart":
   ensure => directory
}

但如果出于任何原因,您想保留“exec”类型,请使用test -d /home/pi/.config/autostart

答案 1 :(得分:0)

我建议只添加一个 -p 标志给mkdir,而不是使用

exec { "mkdir_autostart":
  command => "mkdir -p /home/pi/.config/autostart",
  path    => "/usr/local/bin/:/bin/"
}

或者更好的是,只需使用@ sebastien.prudhomme上面提到的Puppet的文件资源类型。