我在 2.7.11-1ubuntu2.3 中尝试了以下操作。并收到以下错误:err: 无法从远程服务器检索目录:服务器上的错误 400:无法在节点 xxxx 上的 /etc/puppet/modules/php5/manifests/init.pp:90 处匹配 $(pecl)。
知道如何运行命令吗?
在客户端,
puppet 代理--测试
在 master 上
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,
}
答案1
您需要转义命令参数中的那些引号和变量;它们由 Puppet 而不是 bash 进行评估。
但是,使用它onlyif
来检查输出比依赖 shell 更简洁:
exec { "pecl_memcache" :
provider => shell,
command => "pecl install memcache-3.0.8",
unless => "pecl install memcache | egrep fail",
logoutput => true,
}
此处的细微差别在于,它unless
依赖于 egrep 的退出代码,而 -n 测试仅查找非空字符串。在这种情况下,功能应该相同。