regular expression – Ansible: quote square brackets in variable value for regexp parameter

For the modification of a PHP-FPM pool configuration file I use ansible.builtin.lineinfile. How should I quote the square brackets in a value of a variable for the regexp parameter?

Without quoting the square brackets are interpreted as bracket expression – a list of characters to be matching. Without Ansible I would use sed to add a backslash.

The following example is for a Debian default pool conf file.

- name: Change PHP-FPM pool parameters
  become: true
  ansible.builtin.lineinfile:
    path: "/etc/php/{{ php_fpm_version }}/fpm/pool.d/www.conf"
    regexp: "^;?{{ item['para'] }} ="
    line: '{{ item.para }} = {{ item.value }}'
  loop: "{{ php_fpm_pool_parameters }}"
  vars:
    php_fpm_pool_parameters:
    - para: 'pm.max_spare_servers'
      value: '7'
    - para: 'pm.max_requests'
      value: '500'
    - para: 'env[PATH]'
      value: '/usr/bin:/bin'
    - para: 'php_admin_value[memory_limit]'
      value: '4096M'
    - para: 'php_admin_value[max_input_time]'
      value: '600'

Read more here: Source link