1
0
Fork 0
mirror of https://github.com/iiab/iiab.git synced 2025-02-13 11:42:08 +00:00
iiab/roles/moodle/tasks/install.yml

177 lines
8.9 KiB
YAML
Raw Normal View History

# 2021-05-22: FYI nginx_high_php_limits is effectively now auto-enabled by
# www_options/tasks/main.yml#L100-L112 (as required by Moodle 3.11 w/ 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
# 2021-06-28: This ALSO now happens in /etc/php/{{ php_version }}/cli/php.ini
# (as required by Moodle's CLI installer, DESPITE it using fpm/php.ini later!)
2021-06-28 19:02:16 +00:00
#- name: "Set 'apache_install: True' and 'apache_enabled: True'"
# set_fact:
# apache_install: True
# apache_enabled: True
2021-06-28 19:02:16 +00:00
#- name: APACHE - run 'httpd' role
# include_role:
# name: httpd
- name: "Set 'postgresql_install: True' and 'postgresql_enabled: True'"
2020-01-05 03:38:54 +00:00
set_fact:
postgresql_install: True
postgresql_enabled: True
- name: POSTGRESQL - run 'postgresql' role (attempt to install & enable PostgreSQL)
2020-01-05 03:38:54 +00:00
include_role:
name: postgresql
# 2021-07-02: Let's monitor & learn from these 2 pages year-by-year:
# https://docs.moodle.org/19/en/PHP_settings_by_Moodle_version#PHP_Extensions_and_libraries
# https://github.com/moodlebox/moodlebox/blob/master/roles/packages/vars/main.yml
- name: Install ghostscript + libsodium23 + 8 PHP packages (run 'php -m' or 'php -i' to verify)
2019-09-05 05:45:31 +00:00
package:
name:
#- php-apcu # 2021-07-02: Experiment with fewer dependencies
- ghostscript # 2021-07-02: OPTIONAL -- but useful for annotation of PDF's / assignments
- libsodium23 # 2021-06-28: Likewise installed in nginx/tasks/install.yml via php{{ php_version }}-fpm AND httpd/tasks/install.yml via libapache2-mod-php{{ php_version }} AND wordpress/tasks/install.yml -- it can ALSO be auto-installed by phpX.Y-cgi OR phpX.Y-cli as confirmed by 'apt rdepends libsodium23' -- Recommended by Moodle 3.11+ at https://docs.moodle.org/311/en/Environment_-_PHP_extension_sodium -- whereas https://www.php.net/manual/en/sodium.installation.php says it's always bundled with PHP 7.2+ -- VERIFY USING 'php -i | grep sodium' AND 'apt list "*sodium*"'
#- php{{ php_version }}-common # 2021-06-27: Auto-installed as an apt dependency. REGARDLESS: php{{ php_version }}-common superset php{{ php_version }}-cli is auto-installed by php{{ php_version }}-fpm in nginx/tasks/install.yml
#- php{{ php_version }}-cli # 2021-06-27: Compare to php{{ php_version }}-common just above! 2020-06-15: In the past this included (below) mbstring? However this is not true on Ubuntu Server 20.04 LTS.
- php{{ php_version }}-curl # 2021-06-27: Likewise installed in nextcloud/tasks/install.yml, pbx/tasks/freepbx_dependencies.yml, wordpress/tasks/install.yml
- php{{ php_version }}-gd # 2021-06-27: Likewise installed in nextcloud/tasks/install.yml, pbx/tasks/freepbx_dependencies.yml
- php{{ php_version }}-intl # 2020-12-03: Required by Moodle 3.10+ -- Likewise installed in mediawiki/tasks/install.yml, nextcloud/tasks/install.yml, wordpress/tasks/install.yml
- php{{ php_version }}-mbstring # 2020-06-15: Required by Moodle 3.9+ -- Likewise installed in mediawiki/tasks/install.yml, nextcloud/tasks/install.yml, pbx/tasks/freepbx_dependencies.yml, wordpress/tasks/install.yml
- php{{ php_version }}-pgsql # 2021-06-27: Required for PostgreSQL
#- php{{ php_version }}-json # 2021-07-02: Not requested by Moodle's PHP doc above. Package baked into PHP 8+. FWIW with PHP < 8, phpX.Y-json is already auto-installed by phpX.Y-fpm in 3-base-server's nginx/tasks/install.yml
#- php{{ php_version }}-opcache # 2021-07-02: Experiment with fewer dependencies
#- php{{ php_version }}-readline # 2021-07-02: Experiment with fewer dependencies
- php{{ php_version }}-soap # 2020-12-03: Recommended by Moodle 3.10+
- php{{ php_version }}-xml # 2021-06-28: Likewise installed in mediawiki/tasks/install.yml, nextcloud/tasks/install.yml, pbx/tasks/freepbx_dependencies.yml, wordpress/tasks/install.yml -- AND REGARDLESS dragged in later by Admin Console's use of php-pear for roles/cmdsrv/tasks/main.yml -- run 'php -m | grep -i xml' which in the end shows {libxml, SimpleXML, xml, xmlreader, xmlwriter}
#- php{{ php_version }}-xmlrpc # 2021-07-02: Doesn't exist with PHP 8.0 -- officially required per https://docs.moodle.org/19/en/PHP_settings_by_Moodle_version#PHP_Extensions_and_libraries BUT UNMAINTAINED FOR YEARS (POSSIBLE SECURITY RISK) SO MOVED TO PECL: https://php.watch/versions/8.0/xmlrpc
- php{{ php_version }}-zip # 2021-06-27: Likewise installed in nextcloud/tasks/install.yml, pbx/tasks/freepbx_dependencies.yml, wordpress/tasks/install.yml
2019-09-05 05:45:31 +00:00
state: present
- name: Does {{ moodle_base }}/config-dist.php exist? (indicating Moodle is/was installed)
2019-09-05 05:45:31 +00:00
stat:
2021-02-01 16:12:21 +00:00
path: "{{ moodle_base }}/config-dist.php" # /opt/iiab/moodle
2019-09-05 05:45:31 +00:00
register: moodle
- name: Clone (i.e. use git to download) {{ moodle_repo_url }} to {{ moodle_base }} (~288 MB)
2019-09-05 05:45:31 +00:00
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
2019-09-05 05:45:31 +00:00
path: "{{ moodle_base }}"
2021-02-01 16:31:57 +00:00
owner: "{{ apache_user }}" # www-data
2021-07-01 06:18:12 +00:00
group: "{{ apache_user }}"
mode: u+rw,g+r,o+r # '0755' forced executable bits on files
2019-09-05 05:45:31 +00:00
recurse: yes
- name: Create dir {{ content_base }}/dbdata/moodle owned by {{ apache_user }}
2019-09-05 05:45:31 +00:00
file:
state: directory
2021-02-01 16:31:57 +00:00
path: "{{ content_base }}/dbdata/moodle" # /library
2019-09-05 05:45:31 +00:00
owner: "{{ apache_user }}"
2021-02-01 16:12:21 +00:00
- name: Create dir {{ moodle_data }} ({{ apache_user }}:{{ apache_user }}, '0770')
2019-09-05 05:45:31 +00:00
file:
state: directory
2021-02-01 16:12:21 +00:00
path: "{{ moodle_data }}" # /library/moodle
2019-09-05 05:45:31 +00:00
owner: "{{ apache_user }}"
group: "{{ apache_user }}"
2021-02-01 16:12:21 +00:00
#mode: '0770' # Regardless, permissions end up as: drwxrwsrwx
2019-09-05 05:45:31 +00:00
2021-06-28 19:05:19 +00:00
#- name: Remove stock /etc/{{ apache_conf_dir }}/moodle.conf
# file:
# path: "/etc/{{ apache_conf_dir }}/moodle.conf" # apache2/sites-available
# state: absent
2019-09-05 05:45:31 +00:00
2021-02-01 16:31:57 +00:00
# 2021-02-01: Not nec if we can hopefully migrate from Apache to NGINX soon!
2021-06-28 19:05:19 +00:00
#- name: Install /etc/{{ apache_conf_dir }}/022-moodle.conf from template
# template:
# src: 022-moodle.j2
# dest: "/etc/{{ apache_conf_dir }}/022-moodle.conf"
2019-09-05 05:45:31 +00:00
2021-02-01 16:12:21 +00:00
# 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:
2019-09-05 05:45:31 +00:00
name: postgresql-iiab
state: started
2019-09-05 05:45:31 +00:00
- 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')
2019-09-05 05:45:31 +00:00
template:
src: moodle_installer
dest: "{{ moodle_base }}"
mode: '0755'
2019-09-05 05:45:31 +00:00
- name: (Re)Start 'postgresql-iiab' systemd service
systemd:
2019-09-05 05:45:31 +00:00
name: postgresql-iiab
state: restarted
2021-02-01 16:12:21 +00:00
#enabled: yes # Service ends up enabled regardless
2019-09-05 05:45:31 +00:00
2021-06-28 19:05:19 +00:00
#- name: (Re)Start '{{ apache_service }}' systemd service
# systemd:
# name: "{{ apache_service }}"
# state: restarted
2019-09-05 05:45:31 +00:00
- name: Does {{ moodle_base }}/config.php exist?
stat:
path: "{{ moodle_base }}/config.php"
register: config
- name: Execute {{ moodle_base }}/moodle_installer -- REQUIRES 'max_input_vars = 5000' (or higher) in /etc/php/{{ php_version }}/cli/php.ini with PHP 8+ (as set up by www_options/tasks/main.yml) -- WHEREAS Moodle uses /etc/php/{{ php_version }}/{{ apache_service }}/php.ini or /etc/php/{{ php_version }}/fpm/php.ini during regular operation
2019-09-05 05:45:31 +00:00
shell: "{{ moodle_base }}/moodle_installer"
when: config.stat.exists is defined and not config.stat.exists
2021-02-01 16:12:21 +00:00
# 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'
2019-09-05 05:45:31 +00:00
2020-01-30 09:00:00 +00:00
# RECORD Moodle AS INSTALLED
- name: "Set 'moodle_installed: True'"
set_fact:
moodle_installed: True
- name: "Add 'moodle_installed: True' to {{ iiab_state_file }}"
2019-09-09 17:14:13 +00:00
lineinfile:
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
2019-09-09 17:14:13 +00:00
regexp: '^moodle_installed'
2019-10-07 17:11:21 +00:00
line: 'moodle_installed: True'