Ejecución de commands en bash para puppetmaster

He probado lo siguiente en 2.7.11-1ubuntu2.3. Y obtuvo el error siguiente: err: No pudo recuperar el catálogo del server alejado: Error 400 en el SERVIDOR: No podía emparejar $ (pecl en /etc/puppet/modules/php5/manifests/init.pp:90 en el nodo xxxx.

¿Alguna idea de cómo puedo ejecutar commands?

En el cliente,

agente títere – testing

En el maestro

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, } 

Tendrá que escaping de esas comillas y variables dentro del parámetro de command; están siendo evaluados por Puppet en lugar de por bash.

Sin embargo, es más limpio utilizar onlyif lugar de depender de la shell para comprobar la salida:

 exec { "pecl_memcache" : provider => shell, command => "pecl install memcache-3.0.8", unless => "pecl install memcache | egrep fail", logoutput => true, } 

La ligera diferencia aquí es que a unless que se basa en el código de salida de egrep, mientras que el test -n sólo busca una cadena no vacía. Esto debería ser funcionalmente igual en este caso.