Saltstack Official PHP Formula
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.5KB

  1. # Template for installing packages.
  2. {% from "php/ng/map.jinja" import php with context %}
  3. {% from "php/ng/macro.jinja" import sls_block %}
  4. {% set pkginfo = php.lookup.pkgs.get(state) %}
  5. {% set pkgs = [] %}
  6. {% set specials = [] %}
  7. {% if pkginfo is iterable and pkginfo is not string %}
  8. {% for pkg in pkginfo %}
  9. {% if pkg is mapping %}
  10. {% do specials.append(pkg) %}
  11. {% else %}
  12. {% do pkgs.append(pkg) %}
  13. {% endif %}
  14. {% endfor %}
  15. {% else %}
  16. {% do pkgs.append(pkginfo) %}
  17. {% endif %}
  18. {% if grains['os_family']=="Debian" and (state == 'cli' or state == 'fpm' or state == 'php') %}
  19. {% set use_ppa = salt['pillar.get']('php:use_ppa', False) %}
  20. {% if use_ppa %}
  21. {% set ppa_name = salt['pillar.get']('php:ppa_name', 'ondrej/php5') %}
  22. php_ppa_env_{{ state }}:
  23. cmd.run:
  24. - name: apt-add-repository -y ppa:{{ ppa_name }}
  25. - env:
  26. - LC_ALL: C.UTF-8
  27. php_ppa_{{ state }}:
  28. pkgrepo.managed:
  29. - ppa: {{ ppa_name }}
  30. - require:
  31. - cmd: php_ppa_env_{{ state }}
  32. - require_in:
  33. - pkg: php_install_{{ state }}
  34. pkg.latest:
  35. - name: {{ state }}
  36. - pkgs: {{ pkgs|json() }}
  37. - refresh: True
  38. - onchanges:
  39. - pkgrepo: php_ppa_{{ state }}
  40. {% endif %}
  41. {% endif %}
  42. php_install_{{ state }}:
  43. pkg.installed:
  44. - name: {{ state }}
  45. - pkgs: {{ pkgs|json() }}
  46. {% for pkg in specials %}
  47. php_install_{{ state }}_{{ pkg.get('name') }}:
  48. pkg.installed:
  49. {{ sls_block(pkg) }}
  50. {% endfor %}