php5enmod mcrypt 与木偶
php5enmod mcrypt with Puppet
另一个 Puppet 相关问题。
作为 Puppet 安装的一部分,我正在安装:-
- Ubuntu 14.04.2 LTS
- PHP5-FPM
- Nginx
- MySQL 等等
作为 PHP class 的一部分,我有以下内容:-
package {[
'php5-fpm',
'php5-mysql',
'php5-cli',
'php5-mcrypt',
'php5-curl',
]:
ensure => present,
require => Exec['apt-get update'],
}
这部分工作正常。没问题。
一旦服务器完成它的工作,我就可以 运行: -
php5enmod mcrypt
同样,运行s 没有问题,并且在 php5-fpm 安装中启用了 mcrypt。以下代码块出现问题。
exec { 'enable-mcrypt':
command => 'php5enmod mcrypt',
path => '/usr/sbin',
require => [
Package['php5-mcrypt'],
Package['php5-fpm']
],
notify => [
Service['php5-fpm'],
Service['nginx'],
],
}
我已经尝试 运行 以各种形式使用它,并且没有关于它执行的语法或依赖项的问题。
但是,当我查看调试信息时,我看到了:-
Debug: Exec[enable-mcrypt](provider=posix): Executing 'php5enmod pdo'
Debug: Executing 'php5enmod pdo'
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5enmod: 233: /usr/sbin/php5enmod: expr: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5query: 181: /usr/sbin/php5query: expr: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5query: 203: /usr/sbin/php5query: find: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: WARNING:
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: usage: php5enmod [ -s ALL|sapi_name ] module_name [ module_name_2 ]
Error: php5enmod pdo returned 1 instead of one of [0]
Error: /Stage[main]/Php/Exec[enable-mcrypt]/returns: change from notrun to 0 failed: php5enmod pdo returned 1 instead of one of [0]
我搞不懂。似乎 php5enmod 没有看到传递给它的参数,因此 WARNING: usage php5enmod [ -s ALL|sapi_name ]
等...
我之所以这样说,是因为如果我 运行 phpenmod
没有任何参数,就会得到同样的错误。
如果有人有任何想法,我将不胜感激。
不幸的是,我没能像我希望的那样让它工作。我不确定 Puppet 是否不能很好地与 php5enmod 一起玩,或者 php5enmod 是否存在一些内部问题以及 Puppet 脚本调用它的方式。
但是,我确实设法手动创建了符号 link 并使用以下代码块重新启动了服务。
file { '/etc/php5/fpm/conf.d/20-mcrypt.ini':
ensure => 'link',
target => '/etc/php5/mods-available/mcrypt.ini',
require => [
Package['php5-mcrypt'],
Package['php5-fpm'],
],
notify => Service['php5-fpm'],
}
希望这对以后的人有所帮助。
看起来正确的方法(如引用@BMW 的评论)是确保 Puppet 在尝试执行 php5enmod 之前知道 "find" 命令在哪里。
我的人偶配置如下:
# Ensure Mcrypt is enabled
exec { "enablemcrypt":
path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ],
command => "php5enmod mcrypt",
notify => Service["apache2"],
require => Package["php5-common"],
}
如您所见,通过将“/bin”、“/sbin”、“/usr/bin”和“/usr/sbin”添加到路径参数,puppet 现在可以使用 "find" 命令,它似乎在执行带参数的命令时在内部使用。 php5enmod 现在可以在 Ubuntu 14.04 LTS 上为我正确运行。
另一个 Puppet 相关问题。
作为 Puppet 安装的一部分,我正在安装:-
- Ubuntu 14.04.2 LTS
- PHP5-FPM
- Nginx
- MySQL 等等
作为 PHP class 的一部分,我有以下内容:-
package {[
'php5-fpm',
'php5-mysql',
'php5-cli',
'php5-mcrypt',
'php5-curl',
]:
ensure => present,
require => Exec['apt-get update'],
}
这部分工作正常。没问题。
一旦服务器完成它的工作,我就可以 运行: -
php5enmod mcrypt
同样,运行s 没有问题,并且在 php5-fpm 安装中启用了 mcrypt。以下代码块出现问题。
exec { 'enable-mcrypt':
command => 'php5enmod mcrypt',
path => '/usr/sbin',
require => [
Package['php5-mcrypt'],
Package['php5-fpm']
],
notify => [
Service['php5-fpm'],
Service['nginx'],
],
}
我已经尝试 运行 以各种形式使用它,并且没有关于它执行的语法或依赖项的问题。
但是,当我查看调试信息时,我看到了:-
Debug: Exec[enable-mcrypt](provider=posix): Executing 'php5enmod pdo'
Debug: Executing 'php5enmod pdo'
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5enmod: 233: /usr/sbin/php5enmod: expr: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5query: 181: /usr/sbin/php5query: expr: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: /usr/sbin/php5query: 203: /usr/sbin/php5query: find: not found
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: WARNING:
Notice: /Stage[main]/Php/Exec[enable-mcrypt]/returns: usage: php5enmod [ -s ALL|sapi_name ] module_name [ module_name_2 ]
Error: php5enmod pdo returned 1 instead of one of [0]
Error: /Stage[main]/Php/Exec[enable-mcrypt]/returns: change from notrun to 0 failed: php5enmod pdo returned 1 instead of one of [0]
我搞不懂。似乎 php5enmod 没有看到传递给它的参数,因此 WARNING: usage php5enmod [ -s ALL|sapi_name ]
等...
我之所以这样说,是因为如果我 运行 phpenmod
没有任何参数,就会得到同样的错误。
如果有人有任何想法,我将不胜感激。
不幸的是,我没能像我希望的那样让它工作。我不确定 Puppet 是否不能很好地与 php5enmod 一起玩,或者 php5enmod 是否存在一些内部问题以及 Puppet 脚本调用它的方式。
但是,我确实设法手动创建了符号 link 并使用以下代码块重新启动了服务。
file { '/etc/php5/fpm/conf.d/20-mcrypt.ini':
ensure => 'link',
target => '/etc/php5/mods-available/mcrypt.ini',
require => [
Package['php5-mcrypt'],
Package['php5-fpm'],
],
notify => Service['php5-fpm'],
}
希望这对以后的人有所帮助。
看起来正确的方法(如引用@BMW 的评论)是确保 Puppet 在尝试执行 php5enmod 之前知道 "find" 命令在哪里。
我的人偶配置如下:
# Ensure Mcrypt is enabled
exec { "enablemcrypt":
path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ],
command => "php5enmod mcrypt",
notify => Service["apache2"],
require => Package["php5-common"],
}
如您所见,通过将“/bin”、“/sbin”、“/usr/bin”和“/usr/sbin”添加到路径参数,puppet 现在可以使用 "find" 命令,它似乎在执行带参数的命令时在内部使用。 php5enmod 现在可以在 Ubuntu 14.04 LTS 上为我正确运行。