956cee6f69
As RHEL and CentOS are both longer-lived enterprise-class operating systems the software versions are usually lagging a bit behind. In case one wants the longevity of an Enterprise Linux together with more modern software the Softwarecollections project exists which offers amongst others more modern PHP releases. This commit adds a pillar toggle to use the SCL repo and the ability to select which php version to install.
101 lines
3.1 KiB
Django/Jinja
101 lines
3.1 KiB
Django/Jinja
# -*- coding: utf-8 -*-
|
|
# vim: ft=jinja
|
|
{# 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 %}
|
|
|
|
{% if grains['os_family'] == "Debian" and (state == 'cli' or state == 'fpm' or state == 'php') %}
|
|
{% set use_external_repo = salt['pillar.get']('php:use_external_repo', False) %}
|
|
|
|
{% if use_external_repo %}
|
|
{% if grains['os'] == 'Ubuntu' %}
|
|
{% set external_repo_name = salt['pillar.get']('php:external_repo_name', 'ondrej/php') %}
|
|
php_ppa_{{ state }}:
|
|
pkgrepo.managed:
|
|
- ppa: {{ external_repo_name }}
|
|
- env:
|
|
- LC_ALL: C.UTF-8
|
|
- onlyif:
|
|
- test ! -e /etc/apt/sources.list.d/ondrej-ubuntu-php-{{ grains['oscodename'] }}.list {# Trusty and Xenial use different naming schemas #}
|
|
- test ! -e /etc/apt/sources.list.d/ondrej-php-{{ grains['oscodename'] }}.list {# Trusty and Xenial use different naming schemas #}
|
|
- require_in:
|
|
- pkg: php_install_{{ state }}
|
|
pkg.latest:
|
|
- name: {{ state }}
|
|
- pkgs: {{ pkgs|json() }}
|
|
- refresh: True
|
|
- onchanges:
|
|
- pkgrepo: php_ppa_{{ state }}
|
|
|
|
{% else %}
|
|
{% set external_repo_name = salt['pillar.get']('php:external_repo_name', 'packages.sury.org/php' ) %}
|
|
php_repo_{{ state }}:
|
|
pkg.installed:
|
|
- name: apt-transport-https
|
|
|
|
php_ppa_{{ state }}:
|
|
pkgrepo.managed:
|
|
- humanname: {{ external_repo_name }}
|
|
- name: deb https://packages.sury.org/php/ {{ grains['oscodename'] }} main
|
|
- file: /etc/apt/sources.list.d/ondrej-php.list
|
|
- key_url: https://packages.sury.org/php/apt.gpg
|
|
- env:
|
|
- LC_ALL: C.UTF-8
|
|
- onlyif:
|
|
- test ! -e /etc/apt/sources.list.d/ondrej-php.list
|
|
- require_in:
|
|
- pkg: php_install_{{ state }}
|
|
pkg.latest:
|
|
- name: {{ state }}
|
|
- pkgs: {{ pkgs|json() }}
|
|
- refresh: True
|
|
- onchanges:
|
|
- pkgrepo: php_ppa_{{ state }}
|
|
|
|
{% endif %}
|
|
{% endif %}
|
|
{% elif grains['os_family'] == "RedHat" and (state == 'cli' or state == 'fpm' or state == 'php') %}
|
|
{% set use_scl_repo = salt['pillar.get']('php:use_scl_repo', False) %}
|
|
{% set scl_php_version = salt['pillar.get']('php:scl_php_version', 71) %}
|
|
{% if use_scl_repo and grains['os'] == 'CentOS' %}
|
|
php_centos_scl_enable_{{ state }}:
|
|
pkg.installed:
|
|
- name: centos-release-scl
|
|
{% elif use_scl_repo and grains['os'] == 'RedHat' %}
|
|
php_redhat_scl_enable_{{ state }}:
|
|
cmd.run:
|
|
- name: yum-config-manager --enable rhel-server-rhscl-{{ grains['osmajorrelease'] }}-rpms
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
php_install_{{ state }}:
|
|
pkg.installed:
|
|
- name: {{ state }}
|
|
- pkgs: {{ pkgs|json() }}
|
|
|
|
{% for pkg in specials %}
|
|
|
|
php_install_{{ state }}_{{ pkg.get('name') | replace("/", "-") }}:
|
|
pkg.installed:
|
|
{{ sls_block(pkg) }}
|
|
|
|
{% endfor %}
|