Ansible Role moodle¶
This role installs Moodle, an open source Learning Management System (LMS) designed to provide educators with tools for creating and managing online courses and learning activities.
This role supports the following Moodle versions:
v4.1 LTS
v4.5 LTS
Setting the version manually:
ansible-playbook --inventory=myansinv linuxfabrik.lfops.setup_moodle --tags=moodle --extra-vars="moodle__github_version=v4.1.12"
Mandatory Requirements¶
Attention: Moodle has very specific version requirements regarding PHP and Redis. See https://moodledev.io/general/development/policies/php.
Install a web server (for example Apache httpd), and configure a virtual host for Moodle. This can be done using the linuxfabrik.lfops.apache_httpd role.
Install PHP v8.1. This can be done using the linuxfabrik.lfops.repo_remi and linuxfabrik.lfops.php role.
Install Redis v7.2. This can be done using the linuxfabrik.lfops.repo_remi and linuxfabrik.lfops.redis role.
If you use the „Setup Moodle“ Playbook, this is automatically done for you.
Mandatory Role Variables¶
moodle__admin
The admin account to create.
Type: Dictionary.
Subkeys:
username:Mandatory. Username for the Moodle admin account.
Type: String.
password:Mandatory. Password for the Moodle admin account.
Type: String.
email:Mandatory. Email address for the Moodle admin account. Visible for everyone.
Type: String.
moodle__database_login
The user account for accessing the Moodle SQL database. Currently, only MySQL/MariaDB is supported.
Type: Dictionary.
Subkeys:
username:Mandatory. Username for the Moodle database account.
Type: String.
password:Mandatory. Password for the Moodle database account.
Type: String.
moodle__url
The public facing Moodle URL, including
http://orhttps://(the latter if you are behind a TLS-terminating Reverse Proxy).Type: String.
moodle__version
The major and minor of the Moodle version to install. The patch version is automatically gathered, but can be overwritten using
--extra-vars="moodle__github_version=v4.1.12". Recommended to set this to a LTS version, see https://endoflife.date/moodle.Type: String.
Example:
# mandatory
moodle__admin:
username: 'moodle-admin'
password: 'linuxfabrik'
email: 'learning@example.com'
moodle__database_login:
username: 'moodle'
password: 'linuxfabrik'
moodle__url: 'https://learning.example.com'
moodle__version: '4.5'
Optional Role Variables¶
moodle__behind_reverse_proxy
Behind a Reverse Proxy (assuming it terminates TLS) or not?
Type: Bool.
Default:
true
moodle__data_dir
Location of the moodle data folder, must not be web accessible.
Type: String.
Default:
'/data'
moodle__database_host
Database host.
Type: String.
Default:
'localhost'
moodle__database_login_host
The Host-part of the SQL database user.
Type: String.
Default:
'localhost'
moodle__database_name
Database name.
Type: String.
Default:
'moodle'
moodle__database_port
Database port.
Type: Number.
Default:
3306
moodle__database_socket
Path to database socket file.
Type: String.
Default:
'/var/lib/mysql/mysql.sock'
moodle__database_table_prefix
Table prefix for all database tables.
Type: String.
Default:
'mdl_'
moodle__install_dir
Database socket path.
Type: String.
Default:
'/var/www/html/moodle'
moodle__on_calendar_cron
Run interval of Moodle
cron.php. It is recommended that the Systemd timer is run every minute, as required for asynchronous activity deletion when using the recycle bin.Type: String.
Default:
'minutely'
moodle__site_fullname
This name appears at the top of every page above the navigation bar.
Type: String.
Default:
'Moodle powered by Linuxfabrik'
moodle__site_shortname
The short name appears at the beginning of the navigation bar as a link back to your site front page.
Type: String.
Default:
'Moodle'
moodle__site_summary
This summary can be displayed on the left or right of the front page using the course/site summary block. The summary is also used as the HTML metadata description in some themes, for the front page of the site. This is not generally seen by users, but can be useful for search engines that index the page.
Type: String.
Default:
''
moodle__sitepreset
Admin site preset to be applied during the installation process.
Type: String.
Default:
''
moodle__supportemail
Email address for support and help.
Type: String.
Default:
''
moodle__timer_cron_enabled
Enables/disables Systemd-Timer for running
/path/to/moodle/admin/cli/cron.php.Type: Bool.
Default:
true
moodle__upgradekey
The upgrade key to be set in the
config.php, leave empty to not set it.Type: String.
Default:
''
Example:
# optional
moodle__behind_reverse_proxy: true
moodle__data_dir: '/data'
moodle__database_host: 'localhost'
moodle__database_login_host: 'localhost'
moodle__database_name: 'moodle'
moodle__database_port: 3306
moodle__database_socket: '/var/lib/mysql/mysql.sock'
moodle__database_table_prefix: 'mdl_'
moodle__install_dir: '/var/www/html/moodle'
moodle__on_calendar_cron: 'minutely'
moodle__site_fullname: 'Moodle powered by Linuxfabrik'
moodle__site_shortname: 'Moodle'
moodle__site_summary: 'My Site Summary'
moodle__sitepreset: ''
moodle__supportemail: 'support@example.com'
moodle__timer_cron_enabled: true
moodle__upgradekey: ''
Optional Role Variables - Moosh¶
This role supports the administration of Moodle using Moosh. This is done by defining a list of user-defined commands and executing them using the moodle:moosh_run tag. Commands can be defined just like on the command line, so you are free to do whatever you want with Moosh.
moodle__moosh_commands
List of commands that Moosh should execute.
Type: List of strings.
Default:
[]
moodle__moosh_download_url
Moosh download URL on moodle.org.
Type: String.
Default:
'https://moodle.org/plugins/download.php/34835/moosh_moodle45_2025020800.zip'
Example:
# optional
moodle__moosh_commands:
- 'user-create --firstname=Linus --lastname=Löffel --city=Zurich --country=Switzerland linus'
- 'user-list --sort'
moodle__moosh_download_url: 'https://moodle.org/plugins/download.php/34835/moosh_moodle45_2025020800.zip'