Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Select PHP version on RedHat #414

Open
benoistlaurent opened this issue Mar 25, 2024 · 1 comment · May be fixed by #415
Open

Select PHP version on RedHat #414

benoistlaurent opened this issue Mar 25, 2024 · 1 comment · May be fixed by #415

Comments

@benoistlaurent
Copy link

benoistlaurent commented Mar 25, 2024

Description

If I'm not mistaken, one cannot select the PHP version to install on RedHat.

Why is it important?

This is critically important to me because I am developing this role that installs a website that requires PHP >= 7.4 (namely dokuwiki).

Now, in my opinion, my ansible-role-dokuwiki is totally responsible for installing the PHP version it requires.

Right now, this is done by selecting the appropriate module before running the php role:

ansible-role-dokuwiki/tasks/main.yml:

- name: Selects PHP:7.4 (RedHat)
  command: "dnf module enable -y php:7.4"
  when: ansible_os_family == "RedHat"

- name: Install php
  include_role: 
    name: geerlingguy.php

Also, my role defines geerlingguy.php as a dependency in meta/main.yml.

Problem

As ansible runs the dependencies before the current role tasks, it results in a bug due to RedHat's (rightful) refusal to select a different PHP version after installing certain packages.

Proposed solution

  1. Defining php_default_version_redhat in defaults/main.yml
  2. Include this in tasks/main.yml
- name: Set the default PHP version for RedHat-based OSes.
  command: "dnf module enable -y php:{{ php_default_version_redhat }}"  
  when: php_default_version_redhat is defined and ansible_os_family == 'RedHat'

Workaround

The workaround would be to select the appropriate PHP module in the playbook that runs ansible-role-dokuwiki:

server-setup.yml:

---
- hosts: all
  pre_tasks:
   - name: Selects PHP:7.4 (RedHat)
     command: "dnf module enable -y php:7.4"
     when: ansible_os_family == "RedHat"

  roles:
    - ansible-role-dokuwiki

This is not acceptable for me, as, again, to me, ansible-role-dokuwiki is suppose to install the adequate version of PHP, depending on the dokuwiki version the user is ultimately installing.

benoistlaurent added a commit to benoistlaurent/ansible-role-php that referenced this issue Mar 26, 2024
@benoistlaurent benoistlaurent linked a pull request Mar 26, 2024 that will close this issue
@brendon-stephens
Copy link

+1 this would be a good addition to the role.

In my circumstance I needed to install php8.1 which required an extra step to add in the remi repo

        - name: Install remi repository
          ansible.builtin.include_role:
            name: geerlingguy.repo-remi

        - name: Enable php:remi-8.1
           command: "dnf module enable -y php:remi-8.1"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants