2015-06-05 181 views
1

木偶相關的另一個問題。php5enmod mcrypt與木偶

由於我的安裝與木偶的一部分,我安裝: -

  • 的Ubuntu 14.04.2 LTS
  • PHP5-FPM
  • Nginx的
  • 的MySQL等

作爲PHP類的一部分,我有以下內容: -

package {[ 
     'php5-fpm', 
     'php5-mysql', 
     'php5-cli', 
     'php5-mcrypt', 
     'php5-curl', 
    ]: 
    ensure => present, 
    require => Exec['apt-get update'], 
} 

這部分工作正常。沒有問題。

一旦服務器已經完成儘自己的事情,我能夠運行: -

php5enmod mcrypt 

這又運行沒有問題,mcrypt的在PHP5-FPM安裝啓用。問題出現在以下代碼塊中。

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不帶任何參數,這就是你得到同樣的錯誤。

如果有人有任何想法,我會非常感激。

+1

https://www.kubuntuforums.net/showthread.php?60122-find-not-found – BMW

回答

4

看起來是這樣做的正確方法(引用@寶馬的評論)是確保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上正確運行。

+0

好的,這是有道理的。它看起來有點冗長,但邏輯是完善的。 – jellis

+0

我同意,但是在路徑參數中,您只需要查找路徑和php5enmod的路徑。或者我認爲你可以在安裝find的目錄下調用php5enmod及其完整路徑(例如'/ usr/sbin/php5enmod') – BnMcG

3

不幸的是,我無法按照我所希望的那樣工作。我不確定Puppet是否不能很好地與php5enmod一起玩,或者是否有一些php5enmod的內部問題以及它被Puppet腳本調用的方式。

但是,我確實設法手動創建符號鏈接並使用以下代碼塊重新啓動服務。

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

希望這可以幫助某人在未來。