這是通過運行yum whatprovides php-$MODULENAME
在我們的配置每個模塊,然後捕捉包提供模塊手動創建一個列表...
# [email protected]$ php -m
# 'bz2', # php-common
# 'calendar', # php-common
# 'Core', # php-common
# 'ctype', # php-common
# 'curl', # php-common
# 'date', # php-common
# 'dom', # php-xml
# 'ereg', # php-common
# 'exif', # php-common
# 'fileinfo', # php-common
# 'filter', # php-common
# 'ftp', # php-common
'gd', # php-gd needs install
# 'gettext', # php-common
# 'gmp', # php-common
# 'hash', # php-common
# 'iconv', # php-common
# 'json', # php-common
# 'libxml', # php-common
'memcache', # php-pecl-memcache needs install
'mysql', # php-mysql needs install
# 'mysqli', # php-mysql
# 'openssl', # php-common
# 'pcntl', # php-cli
# 'pcre', # php-common
'PDO', # says php-pdo but in common as of 5.3
# 'pdo_mysql', # php-mysql
# 'pdo_sqlite', # php-pdo
# 'Phar', # php-common
'pspell', # php-pspell needs install
# 'readline', # php-cli
# 'Reflection', # php-common
# 'session', # php-common
# 'shmop', # php-common
# 'SimpleXML', # php-common
'snmp', # php-snmp
# 'sockets', # php-common
# 'SPL', # php-common
# 'sqlite3', # php-pdo
# 'standard', # php-common
# 'tokenizer', # php-common
# 'wddx', # php-xml
'xml', # php-xml needs install
# 'xmlreader', # php-xml
'xmlrpc', # php-xmlrpc needs install
# 'xmlwriter', # php-xml
# 'xsl', # php-xml
# 'zip', # php-common
# 'zlib' # php-common
我結束了這params.pp
$php_modules = ['gd','mysql','pspell','snmp','xml','xmlrpc']
和這在我的php.pp配置文件。
package { 'php-pecl-memcached':
ensure => installed,
}
php::module { $php_modules : }
我沒有最終以編程方式完成它。希望列表能夠在未來保存一段時間 - 花費一段時間才能把它做好!
我發現我可以通過遍歷模塊列表併發出'yum whatprovides'php- $ MODULENAME''來緩慢手動獲取這些信息,然後將結果從包中取出。這很可能是更好更快的方式,因爲這是相當殘酷的。基本上尋找'yum whatprovides'列出的特定軟件包,而不是php-common或[no-package-found]。 – phpguru
從任何運行配置派生(最小)Puppet清單是一個難題。我懷疑你將能夠實現一個優雅的腳本來爲你做到這一點。 Puppet的規範方式是1.爲資源實現一個類型/提供者(在本例中爲php模塊)2.使用puppet資源以合適的清單的形式獲取系統中當前實體的列表。儘管這種方法很可能*不適用於你的情況(同樣,也是過度的)。 –