diff --git a/meta/main.yml b/meta/main.yml index 120d6017adfcf9d9214f86774c137f8a0d0f1f5b..61c5d01e1d0e73a61810413a7857fa20b5e5513f 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -3,17 +3,15 @@ galaxy_info: role_name: php author: Chris Croome namespace: chriscroome - description: Ansible role for installing and configuring PHP on Debian + description: Ansible role for installing and configuring PHP on Debian Bullseye and Buster company: Webarchitects Co-operative license: GNU General Public License v3.0 (GPLv3) min_ansible_version: 2.11 platforms: - name: Debian versions: - - bookworm - bullseye - buster - - stretch galaxy_tags: - debian - php diff --git a/tasks/checks.yml b/tasks/checks.yml index 195b5c92011a99c893823cb254c98b0ac0c36de6..80f604d1291925d3fcaa39d14dac5a61538ba9ab 100644 --- a/tasks/checks.yml +++ b/tasks/checks.yml @@ -19,11 +19,11 @@ - php_opcache_validate_root | type_debug == "bool" quiet: "{% if ansible_verbosity == 0 %}true{% else %}false{% endif %}" - - name: Check that the distro is Debian Bookworm, Bullseye, Buster or Stretch or Ubuntu Jammy, Focal or Bionic + - name: Check that the distro is Debian Bullseye or Buster ansible.builtin.assert: that: - ansible_distribution_release is defined - - ansible_distribution_release is regex("^stretch|buster|bullseye|bookworm|focal|bionic|jammy$") + - ansible_distribution_release is regex("^buster|bullseye$") quiet: "{% if ansible_verbosity == 0 %}true{% else %}false{% endif %}" fail_msg: "The Linux distro {{ ansible_distribution }} {{ ansible_distribution_release }} is not supported by this role" diff --git a/tasks/local_facts.yml b/tasks/local_facts.yml index 2170cf9f0862c0d00d138dd15bd912f4fe220dbc..0381b9616e1ac4538246337015c16b19d23bb27f 100644 --- a/tasks/local_facts.yml +++ b/tasks/local_facts.yml @@ -5,6 +5,7 @@ - name: Required packages present ansible.builtin.apt: pkg: + - aptitude - jo state: present diff --git a/tasks/main.yml b/tasks/main.yml index 544e60f3501858ffdfbb798c2e897093641bbc6c..ca5a20daab1a5f11bc059ed7c7bfbedd8ce228e3 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -10,6 +10,7 @@ - name: Include apt repo config for Sury PHP packages ansible.builtin.include_tasks: apt.yml + when: php_sury | bool - name: PHP versions absent block: diff --git a/templates/php.fact.j2 b/templates/php.fact.j2 index 5b7dddfd12703f37bd0704a20f542c1e3f2d61a5..48974e8b2e4556b39ab5c58565f1c83e927ce70b 100644 --- a/templates/php.fact.j2 +++ b/templates/php.fact.j2 @@ -2,43 +2,54 @@ # {{ ansible_managed }} set -euo pipefail +APTITUDE="{{ php_aptitude }}" PHPQUERY="{{ php_phpquery }}" -if [[ -f "${PHPQUERY}" ]] && [[ -f "/usr/lib/php/php-helper" ]] +if [[ -f "${APTITUDE}" ]] then - declare -a versions=() - readarray -t versions < <("${PHPQUERY}" -V | sort -V) - jo state=present versions=$( - jo $( - for v in "${versions[@]}" - do - declare -a mods_available=() - readarray -t mods_available < <("${PHPQUERY}" -v "${v}" -M | sort) - declare -a sapis=() - readarray -t sapis < <("${PHPQUERY}" -v "${v}" -S | sort) - echo ${v}=$( - jo state=present mods_available=$(jo -a "${mods_available[@]}") $( - for s in "${sapis[@]}" - do - declare -a mods_enabled=() - for m in "${mods_available[@]}" - do - if "${PHPQUERY}" -v "${v}" -s "${s}" -m "${m}" -q - then - mods_enabled=(${mods_enabled[@]} ${m}) - fi - done - echo sapis["${s}"]=$( - jo state=present mods_enabled=$( - jo -e -a "${mods_enabled[@]}" - ) + declare -a packages=() + readarray -t packages < <(aptitude -q=99 search '~i!~M php' -F '%p') + if [[ "${#packages[@]}" == 0 ]] + then + jo state=absent + else + if [[ -f "${PHPQUERY}" ]] + then + declare -a versions=() + readarray -t versions < <("${PHPQUERY}" -V | sort -V) + jo state=present packages=$(jo -e -a "${packages[@]}") versions=$(i + jo $( + for v in "${versions[@]}" + do + declare -a mods_available=() + readarray -t mods_available < <("${PHPQUERY}" -v "${v}" -M | sort) + declare -a sapis=() + readarray -t sapis < <("${PHPQUERY}" -v "${v}" -S | sort) + echo ${v}=$( + jo state=present mods_available=$(jo -a "${mods_available[@]}") $( + for s in "${sapis[@]}" + do + declare -a mods_enabled=() + for m in "${mods_available[@]}" + do + if "${PHPQUERY}" -v "${v}" -s "${s}" -m "${m}" -q + then + mods_enabled=(${mods_enabled[@]} ${m}) + fi + done + echo sapis["${s}"]=$( + jo state=present mods_enabled=$( + jo -e -a "${mods_enabled[@]}" + ) + ) + done ) - done ) - ) - done - ) - ) -else - jo state=absent -fi + done + ) + ) + else + jo state=absent + fi + fi +fi diff --git a/templates/php.pref.j2 b/templates/php.pref.j2 index 5b07c99d3b0eaa7d3ce0e919904c9289e838cf6c..aa11ce27b7b07e97df2333a390f81063d927e455 100644 --- a/templates/php.pref.j2 +++ b/templates/php.pref.j2 @@ -15,5 +15,4 @@ Pin-Priority: 100 {% endfor %} {% endif %} - # vim: ft=debsources