diff --git a/pillar/webserver/sites.sls b/pillar/webserver/sites.sls --- a/pillar/webserver/sites.sls +++ b/pillar/webserver/sites.sls @@ -69,6 +69,10 @@ prod: command: /usr/local/sbin/php-fpm + # PHP 5.6, installed through php-builder unit + legacy: + command: /opt/php/php56/sbin/php-fpm + web_php_sites: # Nasqueron members mediawiki.dereckson.be: @@ -118,7 +122,7 @@ user: web-org-espacewin-www source: wwwroot/espace-win.org/www target: /var/wwwroot/espace-win.org/www - php-fpm: prod + php-fpm: legacy www51.espace-win.org: domain: espace-win.org diff --git a/roles/webserver-legacy/php-sites/cleanup.sls b/roles/webserver-legacy/php-sites/cleanup.sls new file mode 100644 --- /dev/null +++ b/roles/webserver-legacy/php-sites/cleanup.sls @@ -0,0 +1,37 @@ +#!py + +# ------------------------------------------------------------- +# Salt — Provision PHP websites — php-fpm pools +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# License: Trivial work, not eligible to copyright +# Description: When a site is declared to be served by +# an instance +# ------------------------------------------------------------- + +def get_etc_dir(): + if __grains__['os'] == 'FreeBSD': + return "/usr/local/etc" + + return "/etc" + + +def files_to_delete_if_they_exist(): + files = [] + etc_dir = get_etc_dir() + for instance in __pillar__['php_fpm_instances']: + files.extend([etc_dir + "/php-fpm.d/" + instance + "-pools/" + site['user'] + ".conf" + for _, site in __pillar__['web_php_sites'].items() + if site['php-fpm'] != instance]) + + return files + + +def run(): + config = {} + + # Task: delete php-fpm stale files + for file in files_to_delete_if_they_exist(): + config[file] = {"file.absent": []} + + return config diff --git a/roles/webserver-legacy/php-sites/files/rc/php-fpm b/roles/webserver-legacy/php-sites/files/rc/php-fpm --- a/roles/webserver-legacy/php-sites/files/rc/php-fpm +++ b/roles/webserver-legacy/php-sites/files/rc/php-fpm @@ -89,6 +89,7 @@ fi command=${php_fpm_command} +command_args="--fpm-config ${php_fpm_conf}" pidfile="${php_fpm_pidfile}" required_files="${php_fpm_conf}" diff --git a/roles/webserver-legacy/php-sites/init.sls b/roles/webserver-legacy/php-sites/init.sls --- a/roles/webserver-legacy/php-sites/init.sls +++ b/roles/webserver-legacy/php-sites/init.sls @@ -10,3 +10,4 @@ - .files - .php - .php-fpm + - .cleanup diff --git a/roles/webserver-legacy/php-sites/php-fpm.sls b/roles/webserver-legacy/php-sites/php-fpm.sls --- a/roles/webserver-legacy/php-sites/php-fpm.sls +++ b/roles/webserver-legacy/php-sites/php-fpm.sls @@ -34,7 +34,7 @@ php-fpm_pool_{{ site['user'] }}: file.managed: - - name: {{ dirs.etc }}/php-fpm.d/prod-pools/{{ site['user'] }}.conf + - name: {{ dirs.etc }}/php-fpm.d/{{ site['php-fpm'] }}-pools/{{ site['user'] }}.conf - source: salt://roles/webserver-legacy/php-sites/files/php-fpm-pool.conf - template: jinja - context: diff --git a/roles/webserver-legacy/php-sites/php.sls b/roles/webserver-legacy/php-sites/php.sls --- a/roles/webserver-legacy/php-sites/php.sls +++ b/roles/webserver-legacy/php-sites/php.sls @@ -15,6 +15,12 @@ file.managed: - source: salt://roles/webserver-legacy/php-sites/files/php.ini +{% for build in pillar['php_custom_builds'] %} +/opt/php/{{ build }}/lib/php.ini: + file.managed: + - source: salt://roles/webserver-legacy/php-sites/files/php.ini +{% endfor %} + # ------------------------------------------------------------- # Sessions directories # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/utils/dump-py-state.py b/utils/dump-py-state.py --- a/utils/dump-py-state.py +++ b/utils/dump-py-state.py @@ -12,6 +12,7 @@ import os +import subprocess import sys import yaml @@ -44,6 +45,16 @@ return pillar +# ------------------------------------------------------------- +# Grains helper +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +def system(args): + result = subprocess.run(args, stdout=subprocess.PIPE) + return result.stdout.decode('utf-8').strip() + + # ------------------------------------------------------------- # Source code helper # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -81,4 +92,10 @@ exit(ex.errno) __pillar__ = load_pillar("pillar") + __grains__ = { + 'os': system(["uname", "-o"]) + } + + print("OS is " + __grains__["os"]) + exec(source_code)