2013-11-20 3 views
1

Попытка создать каталог автозапуска на 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 утверждением, но, создавший такую ​​же ошибку. Что я делаю не так?

EDIT:

Добавлен путь (path => "/usr/local/bin/:/bin/",) и теперь получают:

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

ответ

5

Вы должны использовать "файл" Тип:

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

Но если по какой-либо причине, вы хотите чтобы сохранить ваш тип «exec», используйте test -d /home/pi/.config/autostart

+0

Возможно, будет полезно ссылаться на [файл -> обеспечить документы] (http://docs.puppetlabs.com/references/latest/type.html#file-attribute-ensure) и стоит отметить, что это идемпотент. – steveax

0

Вместо нас ING если я не предложил бы просто добавить флаг -p в MKDIR:

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

Или еще лучше просто использовать файл тип ресурса Puppet, как упоминалось выше, @ sebastien.prudhomme.

Смежные вопросы