# Copyright 2019-2024 Chris Croome # # This file is part of the Webarchitects PHP Ansible role. # # The Webarchitects PHP Ansible role is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. # # The Webarchitects PHP Ansible role is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with the Webarchitects PHP Ansible role. If not, see <https://www.gnu.org/licenses/>. --- - name: PHP configuration file section edited block: - name: Debug the existing and proposed PHP configuration file variables ansible.builtin.debug: msg: - "File: {{ php_conf_file }}" - "Section: {{ php_conf_section.key }}" - "Existing {{ php_conf_variable_pair.key }}: '{{ php_conf_file_existing_vars | community.general.json_query(php_conf_variable_json_query) }}'" - "Proposed {{ php_conf_variable_pair.key }}: '{{ php_conf_variable_pair.value }};" verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}0{% else %}1{% endif %}" when: php_conf_variable_pair.value != php_conf_file_existing_vars | community.general.json_query(php_conf_variable_json_query) vars: php_conf_variable_json_query: '"{{ php_conf_section.key }}"."{{ php_conf_variable_pair.key }}"' loop: "{{ php_conf_section.value | ansible.builtin.dict2items }}" loop_control: loop_var: php_conf_variable_pair label: "{{ php_conf_variable_pair.key }}" # This is to ensure that variables are written to the same place as existing commented values # No longer necessary due to the modify_inactive_option for community.general.ini_file # - name: Uncomment commented variables in the PHP configuration file that are to be edited # ansible.builtin.lineinfile: # path: "{{ php_conf_file }}" # line: "{{ php_conf_variable_pair.key }} = {{ php_conf_variable_pair.value }}" # regex: "{{ php_conf_variable_regex }}" # state: present # backrefs: true # mode: "0644" # owner: root # group: root # when: php_conf_variable_pair.value != php_conf_file_existing_vars | community.general.json_query(php_conf_variable_json_query) # vars: # php_conf_variable_json_query: '"{{ php_conf_section.key }}"."{{ php_conf_variable_pair.key }}"' # php_conf_variable_regex: "^[;]{{ php_conf_variable_pair.key }}[ =]" # loop: "{{ php_conf_section.value | ansible.builtin.dict2items }}" # loop_control: # loop_var: php_conf_variable_pair # register: php_conf_file_comments_edited - name: PHP configuration file edited community.general.ini_file: path: "{{ php_conf_file }}" section: "{{ php_conf_section.key }}" option: "{{ php_conf_variable_pair.key }}" value: "{{ php_conf_variable_pair.value }}" state: present modify_inactive_option: true no_extra_spaces: "{{ php_conf_file_no_extra_spaces }}" mode: "0644" owner: root group: root when: php_conf_variable_pair.value != php_conf_file_existing_vars | community.general.json_query(php_conf_variable_json_query) vars: php_conf_variable_json_query: '"{{ php_conf_section.key }}"."{{ php_conf_variable_pair.key }}"' loop: "{{ php_conf_section.value | ansible.builtin.dict2items }}" loop_control: loop_var: php_conf_variable_pair label: "{{ php_conf_variable_pair.key }}" register: php_conf_file_edited - name: Set a fact to indicate that the file has changed # noqa: no-handler ansible.builtin.set_fact: php_conf_file_changed: true # when: (php_conf_file_comments_edited.changed ) or ( php_conf_file_edited.changed | bool ) when: php_conf_file_edited.changed | bool tags: - php - php_cfg - php_conf ...