Назад | Перейти на главную страницу

Запуск команд в bash для Puppetmaster

Я пробовал следующее в 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 тест просто ищет непустую строку. В этом случае функционально должно быть то же самое.