Я пробовал следующее в 2.7.11-1ubuntu2.3. И появилась следующая ошибка: err: не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: не удалось сопоставить $ (pecl в /etc/puppet/modules/php5/manifests/init.pp:90 на узле xxxx.
Есть идеи, как я могу запускать команды?
марионеточный агент - тест
exec { "pecl_memcache" :
provider => shell,
command => "if [ -n "$(pecl install memcache | egrep fail )" ]; then echo y | pecl install memcache-3.0.8; fi",
logoutput => true,
}
Вам нужно будет экранировать эти кавычки и переменные внутри параметра команды; они оцениваются Puppet, а не bash.
Однако чище использовать onlyif
вместо того, чтобы полагаться на оболочку для проверки вывода:
exec { "pecl_memcache" :
provider => shell,
command => "pecl install memcache-3.0.8",
unless => "pecl install memcache | egrep fail",
logoutput => true,
}
Небольшая разница в том, что unless
полагается на код выхода egrep, тогда как -n тест просто ищет непустую строку. В этом случае функционально должно быть то же самое.