diff --git a/CHANGELOG.rst b/CHANGELOG.rst new file mode 100644 index 0000000..8508766 --- /dev/null +++ b/CHANGELOG.rst @@ -0,0 +1,13 @@ +=========== +php-formula +=========== + +0.2.0 +----- + +- Added .ng states + +0.1.0 +----- + +- Initial version diff --git a/README.rst b/README.rst index 8fb2a4d..0391b76 100644 --- a/README.rst +++ b/README.rst @@ -26,17 +26,17 @@ Installs the php package. Installs the php-apc package. ``php.adodb`` ------------- +------------- Installs the php-adodb package. ``php.cgi`` ------------- +----------- Installs the php-cgi package. ``php.cli`` ------------- +----------- Installs the php-cli package. @@ -59,7 +59,7 @@ Installs the php-gd package. ``php.imagick`` ------------- +--------------- Installs the php-imagick package. @@ -79,7 +79,7 @@ Installs the php-json package. Installs the php-ldap package. ``php.mbstring`` ---------------- +---------------- Installs the php-mbstring package. @@ -90,12 +90,12 @@ Installs the php-mcrypt package. ``php.memcache`` ------------- +---------------- Installs the php-memcache package. ``php.memcached`` ------------- +----------------- Installs the php-memcached package. @@ -105,7 +105,7 @@ Installs the php-memcached package. Installs the php-mysql package. ``php.mysqlnd`` ------------- +--------------- Installs the php-mysqlnd package. @@ -115,7 +115,7 @@ Installs the php-mysqlnd package. Installs the php-pear package. ``php.pgsql`` ------------- +------------- Installs the php-pgsql package. @@ -125,11 +125,182 @@ Installs the php-pgsql package. Installs the php-soap package. ``php.suhosin`` ------------- +--------------- Installs the php-suhosin package. ``php.xml`` ------------- +----------- Installs the php-xml package. + +Next-generation, alternate approach +=================================== + +The following states provide an alternate approach to managing PHP and FPM +pools, as well as code organization. Please provide feedback by filing issues, +discussing in ``#salt`` in Freenode and the mailing list as normal. + +**Note:** php.ng states require the merge parameter of salt.modules.pillar.get(), +first available in the Helium release. + +.. contents:: + :local: + +``php.ng`` +---------- + +Installs the php package. + +``php.ng.adodb`` +---------------- + +Installs the php-adodb package. + +``php.ng.apc`` +-------------- + +Installs the php-apc package. + +``php.ng.cgi`` +-------------- + +Installs the php-cgi package. + +``php.ng.cli`` +-------------- + +Meta-state that combines `php.ng.cli.install`_ and `php.ng.cli.ini`_. + +``php.ng.cli.install`` +---------------------- + +Installs the php-cli package. + +``php.ng.cli.ini`` +------------------ + +Manages the php-cli ini file. + +``php.ng.curl`` +--------------- + +Installs the php5-curl package on Debian, and ensures that curl itself is +installed for RedHat systems, this is due to the curl libs being provided by +php-common, which will get installed with the main php package. + +``php.ng.fpm`` +-------------- + +Meta-state that combines all php.ng.fpm states. + +``php.ng.fpm.config`` +--------------------- + +Manages the (non-pool) php-fpm config files. + + +``php.ng.fpm.install`` +---------------------- + +Installs the php-fpm package. + + +``php.ng.fpm.pools`` +-------------------- + +Meta-state that combines `php.ng.fpm.service`_ and `php.ng.fpm.pools_config`_ + + +``php.ng.fpm.pools_config`` +--------------------------- + +Manages php-fpm pool config files. + + +``php.ng.fpm.service`` +---------------------- + +Manages the php-fpm service. + +``php.ng.gd`` +------------- + +Installs the php-gd package. + + +``php.ng.imagick`` +------------------ + +Installs the php-imagick package. + +``php.ng.imap`` +--------------- + +Installs the php-imap package. + +``php.ng.json`` +--------------- + +Installs the php-json package. + +``php.ng.ldap`` +--------------- + +Installs the php-ldap package. + +``php.ng.mbstring`` +------------------- + +Installs the php-mbstring package. + +``php.ng.mcrypt`` +----------------- + +Installs the php-mcrypt package. + + +``php.ng.memcache`` +------------------- + +Installs the php-memcache package. + +``php.ng.memcached`` +-------------------- + +Installs the php-memcached package. + +``php.ng.mysql`` +---------------- + +Installs the php-mysql package. + +``php.ng.mysqlnd`` +------------------ + +Installs the php-mysqlnd package. + +``php.ng.pear`` +--------------- + +Installs the php-pear package. + +``php.ng.pgsql`` +---------------- + +Installs the php-pgsql package. + +``php.ng.soap`` +--------------- + +Installs the php-soap package. + +``php.ng.suhosin`` +------------------ + +Installs the php-suhosin package. + +``php.ng.xml`` +-------------- + +Installs the php-xml package. \ No newline at end of file diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..81340c7 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0.4 diff --git a/php/map.jinja b/php/map.jinja index ce8ee29..91a7a64 100644 --- a/php/map.jinja +++ b/php/map.jinja @@ -24,6 +24,7 @@ 'adodb_pkg': 'php5-adodb', 'pgsql_pkg': 'php5-pgsql', 'ldap_pkg': 'php5-ldap', + 'php_ini': '/etc/php5/apache2/php.ini', }, 'RedHat': { 'php_pkg': 'php', @@ -50,5 +51,6 @@ 'adodb_pkg': 'php-adodb', 'pgsql_pkg': 'php-pgsql', 'ldap_pkg': 'php-ldap', + 'php_ini': '/etc/php.ini', }, }, merge=salt['pillar.get']('php:lookup')) %} diff --git a/php/ng/adodb.sls b/php/ng/adodb.sls new file mode 100644 index 0000000..5561747 --- /dev/null +++ b/php/ng/adodb.sls @@ -0,0 +1,2 @@ +{% set state = 'adodb' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/apc.sls b/php/ng/apc.sls new file mode 100644 index 0000000..d1c7f1a --- /dev/null +++ b/php/ng/apc.sls @@ -0,0 +1,2 @@ +{% set state = 'apc' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/cgi.sls b/php/ng/cgi.sls new file mode 100644 index 0000000..655e92a --- /dev/null +++ b/php/ng/cgi.sls @@ -0,0 +1,2 @@ +{% set state = 'cgi' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/cli/ini.sls b/php/ng/cli/ini.sls new file mode 100644 index 0000000..b6256e4 --- /dev/null +++ b/php/ng/cli/ini.sls @@ -0,0 +1,9 @@ +# Manages the php cli main ini file +{% from 'php/ng/map.jinja' import php with context %} +{% from "php/ng/ini.jinja" import php_ini %} + +{% set settings = php.ini.defaults %} +{% do settings.update(php.cli.ini.settings) %} + +php_cli_ini: + {{ php_ini(php.lookup.cli.ini, php.cli.ini.opts, settings) }} diff --git a/php/ng/cli/init.sls b/php/ng/cli/init.sls new file mode 100644 index 0000000..06bc3e9 --- /dev/null +++ b/php/ng/cli/init.sls @@ -0,0 +1,11 @@ +# Installs php-cli and manages the associated php.ini + +include: + - php.ng.cli.install + - php.ng.cli.ini + +extend: + php_cli_ini: + file: + - require: + - sls: php.ng.cli.install diff --git a/php/ng/cli/install.sls b/php/ng/cli/install.sls new file mode 100644 index 0000000..c52a6ef --- /dev/null +++ b/php/ng/cli/install.sls @@ -0,0 +1,2 @@ +{% set state = 'cli' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/curl.sls b/php/ng/curl.sls new file mode 100644 index 0000000..6ad15ed --- /dev/null +++ b/php/ng/curl.sls @@ -0,0 +1,2 @@ +{% set state = 'curl' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/files/php.ini b/php/ng/files/php.ini new file mode 100644 index 0000000..d16d374 --- /dev/null +++ b/php/ng/files/php.ini @@ -0,0 +1,31 @@ +{%- macro php_block(config) %} + {% for sections in config %} + {%- for section, settings in sections.items() -%} + {%- if settings is number or settings is string %} +{{ section }} = {{ settings }} + {%- else %} +[{{ section }}] + {%- for setting in settings -%} + {%- for key, value in setting.items() %} + {%- if value is number or value is string %} + {{ key }} = {{ value }} + {%- elif value is iterable -%} + {%- if key == 'error_reporting' %} + {{ key }} = {{ value|join(" & ") }} + {%- else %} + {{ key }} = {{ value|join(",") }} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- endfor -%} + {%- endif -%} + {%- endfor -%} + {% endfor %} +{%- endmacro -%} + +; PHP configuration file. +; +; **** DO NOT EDIT THIS FILE **** +; +; This file is managed by Salt via {{ source }} +{{ php_block(config) }} diff --git a/php/ng/fpm/config.sls b/php/ng/fpm/config.sls new file mode 100644 index 0000000..844b5ba --- /dev/null +++ b/php/ng/fpm/config.sls @@ -0,0 +1,15 @@ +# Manages the php-fpm main ini file +{% from 'php/ng/map.jinja' import php with context %} +{% from "php/ng/ini.jinja" import php_ini %} + +{% set ini_settings = php.ini.defaults %} +{% do ini_settings.update(php.fpm.config.ini.settings) %} + +{% set conf_settings = php.lookup.fpm.defaults %} +{% do conf_settings.update(php.fpm.config.conf.settings) %} + +php_fpm_ini_config: + {{ php_ini(php.lookup.fpm.ini, php.fpm.config.ini.opts, ini_settings) }} + +php_fpm_conf_config: + {{ php_ini(php.lookup.fpm.conf, php.fpm.config.conf.opts, conf_settings) }} diff --git a/php/ng/fpm/init.sls b/php/ng/fpm/init.sls new file mode 100644 index 0000000..2aa9ecb --- /dev/null +++ b/php/ng/fpm/init.sls @@ -0,0 +1,15 @@ +# Meta-state to fully install php.fpm + +include: + - php.ng.fpm.config + - php.ng.fpm.service + - php.ng.fpm.pools + +extend: + php_fpm_service: + service: + - watch: + - file: php_fpm_ini_config + - file: php_fpm_conf_config + - require: + - sls: php.ng.fpm.config diff --git a/php/ng/fpm/install.sls b/php/ng/fpm/install.sls new file mode 100644 index 0000000..6fda19e --- /dev/null +++ b/php/ng/fpm/install.sls @@ -0,0 +1,2 @@ +{% set state = 'fpm' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/fpm/pools.sls b/php/ng/fpm/pools.sls new file mode 100644 index 0000000..79bb0b4 --- /dev/null +++ b/php/ng/fpm/pools.sls @@ -0,0 +1,22 @@ +# Manages the php-fpm pools config files +{% from "php/ng/map.jinja" import php with context %} +{% from "php/ng/macro.jinja" import sls_block %} +{% from "php/ng/fpm/pools_config.sls" import pool_states with context %} + +{% macro file_requisites(states) %} + {%- for state in states %} + - file: {{ state }} + {%- endfor -%} +{% endmacro %} + +include: + - php.ng.fpm.service + - php.ng.fpm.pools_config + +extend: + php_fpm_service: + service: + - watch: + {{ file_requisites(pool_states) }} + - require: + {{ file_requisites(pool_states) }} diff --git a/php/ng/fpm/pools_config.sls b/php/ng/fpm/pools_config.sls new file mode 100644 index 0000000..80a9d2f --- /dev/null +++ b/php/ng/fpm/pools_config.sls @@ -0,0 +1,34 @@ +# Manages the php-fpm pools config files +{% from 'php/ng/map.jinja' import php with context %} +{% from "php/ng/macro.jinja" import sls_block, serialize %} + +# Simple path concatenation. +{% macro path_join(file, root) -%} + {{ root ~ '/' ~ file }} +{%- endmacro %} + +{% set pool_states = [] %} + +{% for pool, config in php.fpm.pools.items() %} +{% set state = 'php_fpm_pool_conf_' ~ loop.index0 %} +{% set fpath = path_join(pool, php.lookup.fpm.pools) %} + +{{ state }}: +{% if config.enabled %} + file.managed: + {{ sls_block(config.get('opts', {})) }} + - name: {{ fpath }} + - source: salt://php/ng/files/php.ini + - template: jinja + - context: + config: {{ serialize(config.get('settings', {})) }} +{% else %} + file.absent: + - name: {{ fpath }} +{% endif %} + +{% do pool_states.append(state) %} +{% endfor %} + + + diff --git a/php/ng/fpm/service.sls b/php/ng/fpm/service.sls new file mode 100644 index 0000000..aa8cd2c --- /dev/null +++ b/php/ng/fpm/service.sls @@ -0,0 +1,18 @@ +# Manages the php-fpm service. +{% from "php/ng/map.jinja" import php with context %} +{% from "php/ng/macro.jinja" import sls_block %} + +{% set service_function = {True:'running', False:'dead'}.get(php.fpm.service.enabled) %} + +include: + - php.ng.fpm.install + +php_fpm_service: + service.{{ service_function }}: + {{ sls_block(php.fpm.service.opts) }} + - name: {{ php.lookup.fpm.service }} + - enable: {{ php.fpm.service.enabled }} + - require: + - sls: php.ng.fpm.install + - watch: + - pkg: php_install_fpm diff --git a/php/ng/gd.sls b/php/ng/gd.sls new file mode 100644 index 0000000..fe55c71 --- /dev/null +++ b/php/ng/gd.sls @@ -0,0 +1,2 @@ +{% set state = 'gd' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/imagick.sls b/php/ng/imagick.sls new file mode 100644 index 0000000..7bfcd46 --- /dev/null +++ b/php/ng/imagick.sls @@ -0,0 +1,2 @@ +{% set state = 'imagick' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/imap.sls b/php/ng/imap.sls new file mode 100644 index 0000000..20b015e --- /dev/null +++ b/php/ng/imap.sls @@ -0,0 +1,2 @@ +{% set state = 'imap' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/ini.jinja b/php/ng/ini.jinja new file mode 100644 index 0000000..eb95003 --- /dev/null +++ b/php/ng/ini.jinja @@ -0,0 +1,12 @@ +# php.ini management macro. +{% from "php/ng/macro.jinja" import sls_block, serialize %} + +{% macro php_ini(filename, opts={}, settings={}) %} + file.managed: + {{ sls_block(opts) }} + - name: {{ filename }} + - source: salt://php/ng/files/php.ini + - template: jinja + - context: + config: {{ serialize(settings) }} +{%- endmacro -%} diff --git a/php/ng/init.sls b/php/ng/init.sls new file mode 100644 index 0000000..80bd5da --- /dev/null +++ b/php/ng/init.sls @@ -0,0 +1,2 @@ +{% set state = 'php' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/installed.jinja b/php/ng/installed.jinja new file mode 100644 index 0000000..249423c --- /dev/null +++ b/php/ng/installed.jinja @@ -0,0 +1,34 @@ +# Template for installing packages. +{% from "php/ng/map.jinja" import php with context %} +{% from "php/ng/macro.jinja" import sls_block %} + + +{% set pkginfo = php.lookup.pkgs.get(state) %} + +{% set pkgs = [] %} +{% set specials = [] %} + +{% if pkginfo is iterable and pkginfo is not string %} + {% for pkg in pkginfo %} + {% if pkg is mapping %} + {% do specials.append(pkg) %} + {% else %} + {% do pkgs.append(pkg) %} + {% endif %} + {% endfor %} +{% else %} + {% do pkgs.append(pkginfo) %} +{% endif %} + +php_install_{{ state }}: + pkg.installed: + - name: {{ state }} + - pkgs: {{ pkgs|json() }} + +{% for pkg in specials %} + +php_install_{{ state }}_{{ pkg.get('name') }}: + pkg.installed: + {{ sls_block(pkg) }} + +{% endfor %} diff --git a/php/ng/json.sls b/php/ng/json.sls new file mode 100644 index 0000000..1f9d6d8 --- /dev/null +++ b/php/ng/json.sls @@ -0,0 +1,2 @@ +{% set state = 'json' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/ldap.sls b/php/ng/ldap.sls new file mode 100644 index 0000000..f75346d --- /dev/null +++ b/php/ng/ldap.sls @@ -0,0 +1,2 @@ +{% set state = 'ldap' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/macro.jinja b/php/ng/macro.jinja new file mode 100644 index 0000000..b13fbf4 --- /dev/null +++ b/php/ng/macro.jinja @@ -0,0 +1,27 @@ +# Returns a generic block of values suitable for inclusion in most states. +{% macro sls_block(dict, ind=4) %} + {% for key, value in dict.items() %} +{{ '-'|indent(ind, True) }} {{ key }}: {{ value|json() }} + {% endfor %} +{% endmacro %} + +# Serializes dicts into sequenced data +{%- macro serialize(data) -%} + {%- if data is mapping -%} + {%- set ret = [] -%} + {%- for key, value in data.items() -%} + {%- set value = serialize(value)|load_json() -%} + {%- do ret.append({key: value}) -%} + {%- endfor -%} + {%- elif data is iterable and data is not string -%} + {%- set ret = [] -%} + {%- for value in data -%} + {%- set value = serialize(value)|load_json() -%} + {%- do ret.append(value) -%} + {%- endfor -%} + {%- else -%} + {% set ret = data %} + {%- endif -%} + + {{ ret|json() }} +{%- endmacro -%} diff --git a/php/ng/map.jinja b/php/ng/map.jinja new file mode 100644 index 0000000..492e8c6 --- /dev/null +++ b/php/ng/map.jinja @@ -0,0 +1,274 @@ +{% set php = salt['pillar.get']('php:ng', { + 'lookup': salt['grains.filter_by']({ + 'Debian': { + 'pkgs': { + 'php': 'php5', + 'apc': 'php-apc', + 'cgi': 'php5-cgi', + 'cli': 'php5-cli', + 'curl': 'php5-curl', + 'fpm': 'php5-fpm', + 'gd': 'php5-gd', + 'mbstring': 'php5', + 'mcrypt': 'php5-mcrypt', + 'memcache': 'php5-memcache', + 'memcached': 'php5-memcached', + 'mysql': 'php5-mysql', + 'mysqlnd': 'php5-mysqlnd', + 'pear': ' php-pear', + 'soap': ' php-soap', + 'xml': ' php5-xml', + 'imagick': 'php5-imagick', + 'suhosin': 'php5-suhosin', + 'imap': 'php5-imap', + 'adodb': 'php5-adodb', + 'pgsql': 'php5-pgsql', + 'ldap': 'php5-ldap', + 'json': 'php5-json', + }, + 'fpm': { + 'conf': '/etc/php5/fpm/php-fpm.conf', + 'ini': '/etc/php5/fpm/php.ini', + 'pools': '/etc/php5/fpm/pool.d', + 'service': 'php5-fpm', + 'defaults': odict([ + ('global', odict([ + ('pid', '/var/run/php5-fpm.pid'), + ('error_log', '/var/log/php5-fpm.log'), + ('include', '/etc/php5/fpm/pool.d/*.conf'), + ])), + ]), + }, + 'cli': { + 'ini': '/etc/php5/cli/php.ini', + }, + }, + 'RedHat': { + 'pkgs': { + 'php': 'php', + 'apc': 'php-pecl-apc', + 'cgi': 'php-cgi', + 'cli': 'php-cli', + 'curl': ['php-common', 'curl'], + 'fpm': 'php-fpm', + 'gd': 'php-gd', + 'mbstring': 'php-mbstring', + 'mcrypt': 'php-mcrypt', + 'memcache': 'php-pecl-memcache', + 'memcached': 'php-pecl-memcached', + 'mysql': 'php-mysql', + 'mysqlnd': 'php-mysqlnd', + 'pear': ' php-pear', + 'soap': ' php-soap', + 'xml': ' php-xml', + 'imagick': 'php-imagick', + 'suhosin': 'php-suhosin', + 'imap': 'php-imap', + 'adodb': 'php-adodb', + 'pgsql': 'php-pgsql', + 'ldap': 'php-ldap', + 'json': 'php-common', + }, + 'fpm': { + 'conf': '/etc/php-fpm.conf', + 'ini': '/etc/php.ini', + 'pools': '/etc/php-fpm.d', + 'service': 'php-fpm', + 'defaults': { + 'global': { + 'pid': '/var/run/php-fpm/php-fpm.pid', + 'error_log': '/var/log/php-fpm/error.log', + 'include': '/etc/php-fpm.d/*.conf', + }, + }, + }, + 'cli': { + 'ini': '/etc/php.ini', + }, + }, + }), + 'fpm': { + 'service': { + 'enabled': True, + 'opts': {}, + }, + 'config': { + 'ini': { + 'opts': {}, + 'settings': {}, + }, + 'conf': { + 'opts': {}, + 'settings': {}, + }, + }, + 'pools': {}, + }, + 'cli': { + 'ini': { + 'opts': {}, + 'settings': {}, + } + }, + 'ini': { + 'defaults': { + 'PHP': { + 'engine': 'On', + 'short_open_tag': 'Off', + 'asp_tags': 'Off', + 'precision': 14, + 'output_buffering': 4096, + 'zlib.output_compression': 'Off', + 'implicit_flush': 'Off', + 'serialize_precision': 17, + 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', + 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', + 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'zend.enable_gc': 'On', + 'expose_php': 'On', + 'max_execution_time': 30, + 'max_input_time': 60, + 'max_input_nesting_level': 64, + 'max_input_vars': 1000, + 'memory_limit': '128M', + 'error_reporting': ['E_ALL', '~E_DEPRECATED', '~E_STRICT'], + 'display_errors': 'Off', + 'display_startup_errors': 'Off', + 'log_errors': 'On', + 'log_errors_max_len': 1024, + 'ignore_repeated_errors': 'Off', + 'ignore_repeated_source': 'Off', + 'report_memleaks': 'On', + 'track_errors': 'Off', + 'html_errors': 'On', + 'variables_order': 'GPCS', + 'request_order': 'GP', + 'register_argc_argv': 'Off', + 'auto_globals_jit': 'On', + 'post_max_size': '8M', + 'default_mimetype': '"text/html"', + 'enable_dl': 'Off', + 'file_uploads': 'On', + 'upload_max_filesize': '2M', + 'max_file_uploads': 20, + 'allow_url_fopen': 'On', + 'allow_url_include': 'Off', + 'default_socket_timeout': 60 + }, + 'CLI Server': { + 'cli_server.color': 'On' + }, + 'Date': { + 'date.timezone': 'America/New_York' + }, + 'Pdo_mysql': { + 'pdo_mysql.cache_size': 2000 + }, + 'mail function': { + 'SMTP': 'localhost', + 'mail.add_x_header': 'On' + }, + 'SQL': { + 'sql.safe_mode': 'Off' + }, + 'ODBC': { + 'odbc.allow_persistent': 'On', + 'odbc.check_persistent': 'On', + 'odbc.max_persistent': '-1', + 'odbc.max_links': '-1', + 'odbc.defaultlrl': 4096, + 'odbc.defaultbinmode': 1 + }, + 'Interbase': { + 'ibase.allow_persistent': 1, + 'ibase.max_persistent': -1, + 'ibase.max_links': -1, + 'ibase.timestampformat': '"%Y-%m-%d %H:%M:%S"', + 'ibase.dateformat': '"%Y-%m-%d"', + 'ibase.timeformat': '"%H:%M:%S"' + }, + 'MySQL': { + 'mysql.allow_local_infile': 'On', + 'mysql.allow_persistent': 'On', + 'mysql.cache_size': '2000', + 'mysql.max_persistent': -1, + 'mysql.max_links': -1, + 'mysql.connect_timeout': 60, + 'mysql.trace_mode': 'Off' + }, + 'MySQLi': { + 'mysqli.max_persistent': -1, + 'mysqli.allow_persistent': 'On', + 'mysqli.max_links': -1, + 'mysqli.cache_size': 2000, + 'mysqli.default_port': 3306, + 'mysqli.reconnect': 'Off' + }, + 'mysqlnd': { + 'mysqlnd.collect_statistics': 'On', + 'mysqlnd.collect_memory_statistics': 'Off' + }, + 'PostgreSQL': { + 'pgsql.allow_persistent': 'On', + 'pgsql.auto_reset_persistent': 'Off', + 'pgsql.max_persistent': -1, + 'pgsql.max_links': -1, + 'pgsql.ignore_notice': 0, + 'pgsql.log_notice': 0 + }, + 'Sybase-CT': { + 'sybct.allow_persistent': 'On', + 'sybct.max_persistent': -1, + 'sybct.max_links': -1, + 'sybct.min_server_severity': 10, + 'sybct.min_client_severity': 10 + }, + 'bcmath': { + 'bcmath.scale': 0 + }, + 'Session': { + 'session.save_handler': 'files', + 'session.use_strict_mode': 0, + 'session.use_cookies': 1, + 'session.use_only_cookies': 1, + 'session.name': 'PHPSESSID', + 'session.auto_start': 0, + 'session.cookie_lifetime': 0, + 'session.cookie_path': '/', + 'session.serialize_handler': 'php', + 'session.gc_probability': 0, + 'session.gc_divisor': 1000, + 'session.gc_maxlifetime': 1440, + 'session.bug_compat_42': 'Off', + 'session.bug_compat_warn': 'Off', + 'session.cache_limiter': 'nocache', + 'session.cache_expire': '180', + 'session.use_trans_sid': 0, + 'session.hash_function': 0, + 'session.hash_bits_per_character': 5, + 'url_rewriter.tags': '"a=href,area=href,frame=src,input=src,form=fakeentry"' + }, + 'MSSQL': { + 'mssql.allow_persistent': 'On', + 'mssql.max_persistent': -1, + 'mssql.max_links': -1, + 'mssql.min_error_severity': 10, + 'mssql.min_message_severity': 10, + 'mssql.compatibility_mode': 'Off', + 'mssql.secure_connection': 'Off' + }, + 'Tidy': { + 'tidy.clean_output': 'Off' + }, + 'soap': { + 'soap.wsdl_cache_enabled': 1, + 'soap.wsdl_cache_dir': '"/tmp"', + 'soap.wsdl_cache_ttl': 86400, + 'soap.wsdl_cache_limit': 5 + }, + 'ldap': { + 'ldap.max_links': -1 + }, + }, + }, +}, merge=True) %} diff --git a/php/ng/mbstring.sls b/php/ng/mbstring.sls new file mode 100644 index 0000000..f8dcbca --- /dev/null +++ b/php/ng/mbstring.sls @@ -0,0 +1,2 @@ +{% set state = 'mbstring' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/mcrypt.sls b/php/ng/mcrypt.sls new file mode 100644 index 0000000..e69fe13 --- /dev/null +++ b/php/ng/mcrypt.sls @@ -0,0 +1,2 @@ +{% set state = 'mcrypt' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/memcache.sls b/php/ng/memcache.sls new file mode 100644 index 0000000..f140102 --- /dev/null +++ b/php/ng/memcache.sls @@ -0,0 +1,2 @@ +{% set state = 'memcache' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/memcached.sls b/php/ng/memcached.sls new file mode 100644 index 0000000..9509c25 --- /dev/null +++ b/php/ng/memcached.sls @@ -0,0 +1,2 @@ +{% set state = 'memcached' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/mysql.sls b/php/ng/mysql.sls new file mode 100644 index 0000000..ad0cfe7 --- /dev/null +++ b/php/ng/mysql.sls @@ -0,0 +1,2 @@ +{% set state = 'mysql' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/mysqlnd.sls b/php/ng/mysqlnd.sls new file mode 100644 index 0000000..90af175 --- /dev/null +++ b/php/ng/mysqlnd.sls @@ -0,0 +1,2 @@ +{% set state = 'mysqld' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/pear.sls b/php/ng/pear.sls new file mode 100644 index 0000000..560d25a --- /dev/null +++ b/php/ng/pear.sls @@ -0,0 +1,2 @@ +{% set state = 'pear' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/pgsql.sls b/php/ng/pgsql.sls new file mode 100644 index 0000000..859e1e9 --- /dev/null +++ b/php/ng/pgsql.sls @@ -0,0 +1,2 @@ +{% set state = 'pgsql' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/soap.sls b/php/ng/soap.sls new file mode 100644 index 0000000..28f2344 --- /dev/null +++ b/php/ng/soap.sls @@ -0,0 +1,2 @@ +{% set state = 'soap' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/suhosin.sls b/php/ng/suhosin.sls new file mode 100644 index 0000000..9099199 --- /dev/null +++ b/php/ng/suhosin.sls @@ -0,0 +1,2 @@ +{% set state = 'suhosin' %} +{% include "php/ng/installed.jinja" %} diff --git a/php/ng/xml.sls b/php/ng/xml.sls new file mode 100644 index 0000000..70c974e --- /dev/null +++ b/php/ng/xml.sls @@ -0,0 +1,2 @@ +{% set state = 'xml' %} +{% include "php/ng/installed.jinja" %} diff --git a/pillar.example b/pillar.example index e69de29..e45f9ec 100644 --- a/pillar.example +++ b/pillar.example @@ -0,0 +1,140 @@ +## php.ng pillar examples + +php: + ng: + # this section contains mostly grain filtered data, while overrides + # are possible in the pillar for unique cases, if your OS is not + # represented, please consider adding it to the map.jinja for + # upstream inclusion + lookup: + + # package definitions, these can strings, lists of strings, or + # lists of dictionaries + pkgs: + memcached: php5-memcached + # ensures both will be installed + curl: + - php-common + - curl + # a dictionary can be used in more complex cases where you want + # to pass forward special arguments to the pkg.installed call + # you MUST include the name argument for this to work + cli: + - + name: php-cli + fromrepo: my-specialrepo + - + name: php-common + skip_verify: True + + # php-fpm os-specific settings + fpm: + conf: /location/of/php-fpm/config.conf + ini: /location/of/php-fpm/php.ini + pools: /location/of/php-fpm/pool.d + service: name-of-php5-fpm-service + + # the default content of the php5-fpm main config file + defaults: + global: + pid: /var/run/php5-fpm.pid + + # php-cli os-specific settings + cli: + ini: /location/of/php-cli/php.ini + + # php-fpm settings + fpm: + + # settings for the php-fpm service + service: + # if True, enables the php-fpm service, if False disables it + enabled: True + # additional arguments passed forward to + # service.enabled/disabled + opts: + reload: True + + # settings for the relevant php-fpm configuration files + config: + + # options to manage the php.ini file used by php-fpm + ini: + # arguments passed through to file.managed + opts: + recurse: True + # php.ini file contents that will be merged with the + # defaults in php.ng.ini.defaults. See php.ng.ini.defaults for + # syntax guidelines. + settings: + PHP: + engine: 'Off' + + # options to manage the php-fpm conf file + conf: + # arguments passed through to file.managed + opts: + recurse: True + # php-fpm conf file contents that will be merged with + # php.ng.lookup.fpm.defaults. See php.ng.ini.defaults for + # ini-style syntax guidelines. + settings: + global: + pid: /var/run/php-fpm/special-pid.file + + # settings for fpm-pools + pools: + # name of the pool file to be managed, this will be appended + # to the path specified in php.ng.lookup.fpm.pools + 'mypool.conf': + # If true, the pool file will be managed, if False it will be + # absent + enabled: True + # arguments passed forward to file.managed or file.absent + opts: + replace: False + + # pool file contents. See php.ng.ini.defaults for ini-style + # syntax guidelines. + settings: + myapp: + user: www-data + group: www-data + listen: /var/run/php5-fpm-myapp.sock + pm: dynamic + pm.max_children: 5 + pm.start_servers: 2 + pm.min_spare_servers: 1 + pm.max_spare_servers: 3 + 'php_admin_value[memory_limit]': 300M + + # php-cli settings + cli: + # settings to manage the cli's php.ini + ini: + # opts passed forward directly to file.managed + opts: + replace: False + # contents of the php.ini file that are merged with defaults + # from php.ng.ini.defaults. See php.ng.ini.defaults for ini-style + # syntax guidelines + settings: + PHP: + engine: 'Off' + + # global php.ini settings + ini: + # Default php.ini contents. These follow a strict format. The top- + # level dict keys form ini group headings. Nested key/value + # pairs represent setting=value statements. If a value is a list, + # its contents will be joined by commas in final rendering. + defaults: + PHP: + engine: on + output_buffering: 4096 + disable_functions: + - pcntl_alarm + - pcntl_fork + - pcntl_wait + 'CLI Server': + cli_server_color: 'On'