ThePrudents.moodle

Moodle-Installation auf Ubuntu 14.04 in der BlueMix-Cloud-Umgebung mit Ansible

Einleitung

Moodle ist eine Open-Source-Plattform für das Kursmanagement, die es Ihnen ermöglicht, Online-Lernseiten zu erstellen. Der Name steht für Modular Object-Oriented Dynamic Learning Environment und bietet viele Funktionen, die ein effizientes Online-Lernerlebnis ermöglichen, das von einer kleinen Anzahl von Studenten bis hin zu Hunderten skalieren kann.

Beispielsweise können Sie die Einreichung von Aufgaben, Quizze, FAQs, Punktzahlen, Sofortnachrichten, Diskussionsforen usw. einführen. Da es sich um eine modulare Software handelt, kann sie mit Plugins erweitert werden, um zusätzliche Funktionen hinzuzufügen.

Moodle läuft typischerweise auf LAMP (Linux, Apache, MySQL und PHP), kann jedoch auch mit anderen Webservern wie nginx und sogar auf Windows unter IIS verwendet werden.

Modularität hat sowohl Vor- als auch Nachteile - normalerweise hat jeder Lehrer sein eigenes bevorzugtes Set an Themen und Plugins. Dadurch wird die ursprüngliche Moodle-Installation für nicht-technische Benutzer schwierig.

Glücklicherweise wird Ihnen das Automatisierungstool Ansible Zeit bei der Installation sparen.

Hintergrund

Herausforderungen

  • Beschreiben der gewünschten Moodle-Komponenten.
  • Optional MySQL installieren (Sie können auch eine externe Datenbank verwenden).
  • Optional LAMP installieren (vielleicht aktualisieren Sie Moodle selbst).
  • Optional Moodle-Plugins und -Themen Ihrer Wahl installieren.
  • Die Kernelemente von Moodle installieren.

Gehen wir Schritt für Schritt vor.

Beschreibung der gewünschten Moodle-Komponenten

Laut dem offiziellen Installationshandbuch auf https://docs.moodle.org/30/en/Step-by-step_Installation_Guide_for_Ubuntu. Hier sind die Paketabhängigkeiten und benötigten PHP-Erweiterungen:

pkg_dependencies:
  - git
  - curl
  - python-dev
  - libmysqlclient-dev
  - graphviz
  - aspell
  - clamav
  - unzip

php_extensions:
  - php5-mysql
  - php5-intl
  - php5-xmlrpc
  - php5-pspell
  - php5-curl
  - php5-gd
  - php5-ldap

Für Moodle selbst müssen wir die bevorzugten Datenbankzugangsparameter angeben, die Domain, die Sie der Moodle-Instanz zuweisen möchten, und Ihren bevorzugten Speicherort. Sie sollten auch die neueste stabile Version von Moodle überprüfen und ebenfalls angeben.

moodle_db_type: 'mysqli' #  'pgsql', 'mariadb', 'mysqli', 'mssql', 'sqlsrv' oder 'oci'
moodle_db_host: '{{mysql_host}}'
moodle_db_name: 'moodle'
moodle_db_user: 'moodle'
moodle_db_pass: 'moodle'
moodle_app_domain: "moodle.dev"
moodle_app_root: "/opt/moodle"
moodle_app_wwwroot: "{{ moodle_app_root }}/moodle"
moodle_app_datadir: "{{moodle_app_root}}/moodledata"
moodle_app_plugindir: "{{moodle_app_root}}/downloadedplugins"
moodle_git_version: "MOODLE_30_STABLE"
moodle_artifact_baseurl: https://download.moodle.org/download.php/direct/stable30
moodle_archive_version: "moodle-latest-30.tgz"

moodle_user: "{{ansible_user_id}}"

moodle_admin_user: "6NHkm*S!^W4w"

Moodle kann entweder aus einem Git-Repository oder durch Herunterladen eines Pakets installiert werden. Die Git-Option wird als einfacher zu warten angesehen. Wir unterstützen hier beide Möglichkeiten, Sie wählen die beste für Ihren Fall.

option_install_moodle: git

Optionale MySQL-Installation

Obwohl Moodle mehrere Datenbanken unterstützt, ist MySQL die typischste und am besten bekannte Datenbank auf Unix. Um MySQL zu installieren, müssen Sie nur die gewünschten Root-Anmeldeinformationen für MySQL angeben.

mysql_host: "127.0.0.1"
mysql_root_user: root
mysql_root_password: SOMEROOTSECUREPASSWORD

Moodle hat eigene Präferenzen für die MySQL-Konfiguration. Diese werden durch eine benutzerdefinierte my.cnf-Vorlage behandelt, die Sie unter diesem Link überprüfen können: https://github.com/ThePrudents/moodle/blob/master/templates/mysql/my.cnf.j2

Eine eigenständige Anleitung zur Installation von MySQL finden Sie hier: https://github.com/ThePrudents/moodle/blob/master/tasks/mysql.yml

Optionale LAMP-Installation

Für LAMP haben wir die Möglichkeit, Apache entweder im Worker- oder Prefork-Modus zu installieren. Dies hat Einfluss auf PHP: Es wird entweder als PHP-FPM oder über das Mod_php-Apache-Modul installiert. Heutzutage ist der Worker-Modus vorzuziehen.

apache_mode: worker # Verwenden Sie prefork oder worker-Variablen
apache2_disable_default: true

php_family: default # 5.4 | 5.5 | 5.6 | default

Sie sollten die Rezepte zur Installation von Apache (https://github.com/ThePrudents/moodle/blob/master/tasks/apache.yml) und PHP (https://github.com/ThePrudents/moodle/blob/master/tasks/php_apache.yml) für weitere Details überprüfen.

Bitte beachten Sie, dass Moodle zusätzliche PHP-Erweiterungen benötigt, daher haben wir einen zusätzlichen Schritt eingeführt, wie hier überprüft werden kann: https://github.com/ThePrudents/moodle/blob/master/tasks/php_additional_extensions.yml

Optionale benutzerdefinierte Plugins und Themen für Moodle

Die meisten Plugins und Themen werden installiert, indem Archive in die entsprechenden Ordner entpackt werden. Wir können diesen Prozess leicht automatisieren, wenn Sie uns einfach die Informationen zu Ihren bevorzugten Plugins mitteilen:

moodle_plugins:
  - {
    name: auth_googleoauth2,
    desc: "Authentifizierung: Google / Facebook / Github / Linkedin / DropBox / Windows / VK / Battle.net-Authentifizierung",
    url: "https://moodle.org/plugins/download.php/9695/auth_googleoauth2_moodle30_2015110600.zip",
    dest: auth #/googleoauth2
    }
  - {
    name: mod_checklist,
    desc: "Aktivitäten: Checkliste",
    url: "https://moodle.org/plugins/download.php/9703/mod_checklist_moodle30_2015110800.zip",
    dest: mod #/checklist
    }
  - {
    name: block_xp,
    desc: "Blöcke: Level hoch!",
    url: "https://moodle.org/plugins/download.php/9400/block_xp_moodle30_2015092800.zip",
    dest: blocks #/block_xp
    }
  - {
    name: theme_essential,
    desc: "Themen: Essentiell",
    url: "https://moodle.org/plugins/download.php/10342/theme_essential_moodle30_2016010201.zip",
    dest: theme #/theme_essential
    }

Installation der Moodle-Kernelemente

In diesem Schritt erstellen wir die Verzeichnisse für Moodle (Quellcode, Daten, Plugins), führen die Datenbankkonfiguration durch und konfigurieren den Apache-Virtuellen Host für diese Instanz.

Die Einzelheiten der Schritte können Sie an dieser Stelle überprüfen: https://github.com/ThePrudents/moodle/blob/master/tasks/moodle.yml

Code in Aktion

Um die Bereitstellung auszuführen, benötigen wir Ansible und Prudentia. Beide Tools sind reine Python-Anwendungen. Ansible ist ein DevOps-Toolkit, während Prudentia etwas "syntaktischen Zucker" bietet, um Ansible-Playbooks einfach auszuführen. Weitere Details finden Sie auf pypi https://pypi.python.org/pypi/prudentia. Für Ubuntu sind die typischen Schritte zur Installation der Tools:

sudo apt-get install git
sudo apt-get install python-pip
pip install -U pip
pip install -U ansible==1.9.4
pip install prudentia

Um die Moodle-Rolle wieder zu verwenden, lautet die typische Syntax: (bitte beachten Sie, dass Sie jeden Rollparameter überschreiben können, was das Rezept flexibel macht).

roles:
   - {
       role: "pr-moodle",
       moodle_db_host: '127.0.0.1',
       moodle_db_name: 'moodle',
       moodle_db_user: 'moodle',
       moodle_db_pass: 'yourSuperSecurePassword',
       moodle_app_domain: "yourdomainname.com"
     }

Die Shell-Datei zur Ausführung der Boxbereitstellung:

# Statische Parameter
WORKSPACE=./
BOX_PLAYBOOK=$WORKSPACE/boxes/prod.yml
BOX_NAME=moodle_staging
BOX_ADDRESS=192.168.0.17
BOX_USER=youruser
BOX_PWD=yourpass

prudentia ssh <<EOF
unregister $BOX_NAME

register
$BOX_PLAYBOOK
$BOX_NAME
$BOX_ADDRESS
$BOX_USER
$BOX_PWD

provision $BOX_NAME
EOF

Ausführen auf BlueMix

IBM Bluemix ist eine Cloud-Plattform als Dienst (PaaS), die von IBM entwickelt wurde. Sie unterstützt mehrere Programmiersprachen und -dienste sowie integrierte DevOps zur Erstellung, Ausführung, Bereitstellung und Verwaltung von Anwendungen in der Cloud. Einer der bereitgestellten Dienste sind Virtuelle Maschinen.

Wählen wir das Ubuntu 14.04.3 LTS-Image (verfügbar zum Download).

Wir müssen eine öffentliche IP-Adresse für unsere Instanz zuweisen und auf die Initialisierung warten.

Vergessen Sie nicht, die DNS-Einstellungen zu konfigurieren, sobald Sie die öffentliche IP-Adresse von der Bluemix-Plattform erhalten haben.

Es ist Zeit, die Bereitstellung auszuführen. Nach der Ausführung der Bereitstellung sehen Sie typischerweise das erfolgreiche Protokoll des Ansible-Bereitstellers.

TASK: [pr-moodle | Moodle konfigurieren] ******************************************
changed: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | Cron einrichten] **************************************
changed: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | Moodle-Datenbank erstellen] ***************************
changed: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | Moodle-Datenbankbenutzer erstellen] ********************
changed: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | Apache-Site-Konfiguration erstellen] *****************
changed: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | Apache-Site-Konfiguration erstellen] *****************
ok: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | a2ensite moodle] **********************************
changed: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | Verzeichnis für heruntergeladene Plugins erstellen] **********
changed: [bluemix.moodle.dev]

TASK: [pr-moodle | Moodle | Plugins herunterladen] *********************************
changed: [bluemix.moodle.dev] => (item={'url': 'https://moodle.org/plugins/download.php/9695/auth_googleoauth2_moodle30_2015110600.zip', 'dest': 'auth', 'name': 'auth_googleoauth2', 'desc': 'Authentifizierung: Google / Facebook / Github / Linkedin / DropBox / Windows / VK / Battle.net-Authentifizierung'})
changed: [bluemix.moodle.dev] => (item={'url': 'https://moodle.org/plugins/download.php/9703/mod_checklist_moodle30_2015110800.zip', 'dest': 'mod', 'name': 'mod_checklist', 'desc': 'Aktivitäten: Checkliste'})
changed: [bluemix.moodle.dev] => (item={'url': 'https://moodle.org/plugins/download.php/9400/block_xp_moodle30_2015092800.zip', 'dest': 'blocks', 'name': 'block_xp', 'desc': 'Blöcke: Level hoch!'})
changed: [bluemix.moodle.dev] => (item={'url': 'https://moodle.org/plugins/download.php/10342/theme_essential_moodle30_2016010201.zip', 'dest': 'theme', 'name': 'theme_essential', 'desc': 'Themen: Essentiell'})

TASK: [pr-moodle | Moodle | Entpacke Plugins] ***********************************
changed: [bluemix.moodle.dev] => (item={'url': 'https://moodle.org/plugins/download.php/9695/auth_googleoauth2_moodle30_2015110600.zip', 'dest': 'auth', 'name': 'auth_googleoauth2', 'desc': 'Authentifizierung: Google / Facebook / Github / Linkedin / DropBox / Windows / VK / Battle.net-Authentifizierung'})
changed: [bluemix.moodle.dev] => (item={'url': 'https://moodle.org/plugins/download.php/9703/mod_checklist_moodle30_2015110800.zip', 'dest': 'mod', 'name': 'mod_checklist', 'desc': 'Aktivitäten: Checkliste'})
changed: [bluemix.moodle.dev] => (item={'url': 'https://moodle.org/plugins/download.php/9400/block_xp_moodle30_2015092800.zip', 'dest': 'blocks', 'name': 'block_xp', 'desc': 'Blöcke: Level hoch!'})

PLAY RECAP ********************************************************************
bluemix.moodle.dev         : ok=60   changed=52   unreachable=0    failed=0

Die Spielausführung dauerte 3 Minuten.

Wie Sie sehen können, ist Moodle innerhalb von weniger als 5 Minuten bereit zur Konfiguration.

Nach dem Navigieren zur Website sehen wir den initialen Startbildschirm von Moodle.

Wir sehen, dass die Box korrekt konfiguriert ist.

Die ersten Schritte verlaufen reibungslos.

Wie wir sehen, sind alle benutzerdefinierten Plugins und Themen vorhanden, zum Beispiel "Blöcke: Level hoch!".

Was kann verbessert werden

Idealerweise kann das Rezept so verbessert werden, dass es vollständig interaktiv ist. Moodle scheint eine solche Einrichtung in der Zukunft zuzulassen (wenn wir uns install.php ansehen). Leider bietet die aktuelle Dokumentation keinen klaren Weg, wie dies zu tun ist, es sei denn, Sie skripten die Konfiguration und die DB der bestehenden Moodle-Installation.

Leser sind herzlich eingeladen, Optionen vorzuschlagen.

Über das Projekt

zero dependency role to install Moodle on debian system

Installieren
ansible-galaxy install ThePrudents.moodle
GitHub Repository
Lizenz
Unknown
Downloads
70
Besitzer
StarterSquad team