# 2021-05-22: FYI nginx_high_php_limits is effectively now auto-enabled by # www_options/tasks/main.yml#L81-L94 (as required by Moodle 3.11 with PHP 8) IF # 'moodle_install: True'. Happens at the end of 4-server-options/tasks/main.yml # See the 6 settings in /etc/php/{{ php_version }}/fpm/php.ini -- which Moodle # should take advantage of soon, as it transitions from Apache to Moodle: #2785 - name: "Set 'apache_install: True' and 'apache_enabled: True'" set_fact: apache_install: True apache_enabled: True - name: APACHE - run 'httpd' role include_role: name: httpd - name: "Set 'postgresql_install: True' and 'postgresql_enabled: True'" set_fact: postgresql_install: True postgresql_enabled: True - name: POSTGRESQL - run 'postgresql' role (attempt to install & enable PostgreSQL) include_role: name: postgresql - name: Install 8 php packages (debuntu) package: name: - php{{ php_version }}-pgsql - php{{ php_version }}-curl - php{{ php_version }}-zip - php{{ php_version }}-gd - php{{ php_version }}-mbstring # 2020-06-15: Required by Moodle 3.9+ - php{{ php_version }}-cli # 2020-06-15: In the past this included (above) mbstring? However this is not true on Ubuntu Server 20.04 LTS. - php{{ php_version }}-intl # 2020-12-03: Required by Moodle 3.10+ - php{{ php_version }}-soap # 2020-12-03: Recommended by Moodle 3.10+ #- php-sodium # 2021-05-17: Recommended by Moodle 3.11+ at https://docs.moodle.org/311/en/Environment_-_PHP_extension_sodium AND ALREADY PRE-ENABLED BY PHP 7.2+ https://www.php.net/manual/en/sodium.installation.php AS CONFIRMED BY 'php -i | grep sodium' AND 'apt list "*sodium*"' state: present when: is_debuntu - name: Does {{ moodle_base }}/config-dist.php exist? (indicating Moodle is/was installed) stat: path: "{{ moodle_base }}/config-dist.php" # /opt/iiab/moodle register: moodle - name: Clone (i.e. use git to download) {{ moodle_repo_url }} to {{ moodle_base }} (~300 MB) git: repo: "{{ moodle_repo_url }}" dest: "{{ moodle_base }}" depth: 1 force: yes version: "MOODLE_{{ moodle_version }}_STABLE" #version: master # TEMPORARY DURING MAY 2018 TESTING, installed 3.5beta+ = https://download.moodle.org/releases/development/ #ignore_errors: yes when: internet_available and moodle.stat.exists is defined and not moodle.stat.exists - name: Create dir {{ moodle_base }} owned by {{ apache_user }} (for config file?) file: state: directory path: "{{ moodle_base }}" owner: "{{ apache_user }}" # www-data recurse: yes - name: Create dir {{ content_base }}/dbdata/moodle owned by {{ apache_user }} file: state: directory path: "{{ content_base }}/dbdata/moodle" # /library owner: "{{ apache_user }}" - name: Create dir {{ moodle_data }} ({{ apache_user }}:{{ apache_user }}, '0770') file: state: directory path: "{{ moodle_data }}" # /library/moodle owner: "{{ apache_user }}" group: "{{ apache_user }}" #mode: '0770' # Regardless, permissions end up as: drwxrwsrwx - name: Remove stock /etc/{{ apache_conf_dir }}/moodle.conf file: path: "/etc/{{ apache_conf_dir }}/moodle.conf" # apache2/sites-available state: absent # 2021-02-01: Not nec if we can hopefully migrate from Apache to NGINX soon! - name: Install /etc/{{ apache_conf_dir }}/022-moodle.conf from template template: src: 022-moodle.j2 dest: "/etc/{{ apache_conf_dir }}/022-moodle.conf" # roles/postgresql/templates/postgresql-iiab.service WAS INSTALLED HERE: # /etc/systemd/system/postgresql-iiab.service - name: Start 'postgresql-iiab' systemd service, to configure Moodle's DB systemd: name: postgresql-iiab state: started - name: Create PostgreSQL db user Admin/changeme postgresql_user: name: Admin password: changeme encrypted: yes # Required by PostgreSQL 10+ e.g. Ubuntu 18.04's PostgreSQL 10.3+, see https://github.com/iiab/iiab/issues/759 role_attr_flags: NOSUPERUSER,NOCREATEROLE,NOCREATEDB state: present become: yes become_user: postgres - name: 'Create database: {{ moodle_database_name }}' postgresql_db: name: "{{ moodle_database_name }}" encoding: utf8 owner: Admin template: template1 state: present become: yes become_user: postgres - name: Install {{ moodle_base }}/moodle_installer from template ('0755') template: src: moodle_installer dest: "{{ moodle_base }}" mode: '0755' - name: (Re)Start 'postgresql-iiab' systemd service systemd: name: postgresql-iiab state: restarted #enabled: yes # Service ends up enabled regardless - name: (Re)Start '{{ apache_service }}' systemd service systemd: name: "{{ apache_service }}" state: restarted - name: Does {{ moodle_base }}/config.php exist? stat: path: "{{ moodle_base }}/config.php" register: config - name: Execute {{ moodle_base }}/moodle_installer shell: "{{ moodle_base }}/moodle_installer" when: config.stat.exists is defined and not config.stat.exists # 2021-02-01: Let's stick with Moodle's default (640) #- name: Make {{ moodle_base }}/config.php readable, with permission '0644' # #command: chown -R {{ apache_user }} {{ moodle_base }} # file: # path: "{{ moodle_base }}/config.php" # /opt/iiab/moodle # mode: '0644' # RECORD Moodle AS INSTALLED - name: "Set 'moodle_installed: True'" set_fact: moodle_installed: True - name: "Add 'moodle_installed: True' to {{ iiab_state_file }}" lineinfile: path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml regexp: '^moodle_installed' line: 'moodle_installed: True'